{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "gv6nx80K4QNK"
      },
      "source": [
        "import numpy as np\n",
        "import pandas as pd \n",
        "from keras.preprocessing.image import ImageDataGenerator, load_img\n",
        "from keras.utils import to_categorical\n",
        "from sklearn.model_selection import train_test_split\n",
        "import matplotlib.pyplot as plt\n",
        "import random\n",
        "import os"
      ],
      "execution_count": 1,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "iT0un9wb7QEb"
      },
      "source": [
        "Define constants"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XcFGFv2o7N1u"
      },
      "source": [
        "FAST_RUN = False\n",
        "IMAGE_WIDTH=128\n",
        "IMAGE_HEIGHT=128\n",
        "IMAGE_SIZE=(IMAGE_WIDTH, IMAGE_HEIGHT)\n",
        "IMAGE_CHANNELS=3"
      ],
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "JtsAalz-7TmB"
      },
      "source": [
        "Prepare data"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "s_iDUIM77Vk4"
      },
      "source": [
        "Download data and save it"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_05v3CbN7RpR"
      },
      "source": [
        "url = 'https://drive.google.com/file/d/1gjbSZV5NjjIVOqSP-yTCqXcGPX9PnYn5/view?usp=sharing'"
      ],
      "execution_count": 3,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Fp1FQpyd7jwo",
        "outputId": "66d163cc-4f7d-4904-b583-25c2ec2b0f1c",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "!gdown --id 1gjbSZV5NjjIVOqSP-yTCqXcGPX9PnYn5"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Downloading...\n",
            "From: https://drive.google.com/uc?id=1gjbSZV5NjjIVOqSP-yTCqXcGPX9PnYn5\n",
            "To: /content/MM17-WeiboRumorSet.zip\n",
            "1.35GB [00:14, 91.5MB/s]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hYPHGO1E7uh6"
      },
      "source": [
        "Unzip and save into folder train_extracted"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rhviYA0i7spi"
      },
      "source": [
        "import zipfile\n",
        "with zipfile.ZipFile(\"MM17-WeiboRumorSet.zip\",\"r\") as zip_ref:\n",
        "    zip_ref.extractall(\"./train_extracted\")"
      ],
      "execution_count": 5,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pWLQXyRB74iI"
      },
      "source": [
        "Exract labels from image names and save image names with corresponding labels in dataframe"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Pk6D3XmT72dg"
      },
      "source": [
        "filenames1 = os.listdir(\"./train_extracted/MM17-WeiboRumorSet/rumor_images\")\n",
        "filenames01 = []\n",
        "categories1 = []\n",
        "for filename in filenames1:\n",
        "    category = 1 # rumor\n",
        "    categories1.append(1)\n",
        "    s = \"rumor_images/\"+str(filename)\n",
        "    filenames01.append(s)\n",
        "\n",
        "df1 = pd.DataFrame({\n",
        "    'filename': filenames01,\n",
        "    'category': categories1\n",
        "})"
      ],
      "execution_count": 6,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bHnbciSU8dYZ",
        "outputId": "3f1258e6-7d75-4377-c5b0-1c80716cc5ab",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df1.head()"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>rumor_images/005Cp0Zcjw1eqxg1ipc63j30hs0hztah.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>rumor_images/720be4e5gw1eo6jz021qmj20c00e3mxq.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>rumor_images/6a77ebb7jw1ev20xu2excj20p018gn18.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>rumor_images/0062G6IYjw1er1zfiinvhj30wo1407az.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>rumor_images/5d6ed51fjw1eb8s33w2yoj20c808q0u1.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  rumor_images/005Cp0Zcjw1eqxg1ipc63j30hs0hztah.jpg         1\n",
              "1  rumor_images/720be4e5gw1eo6jz021qmj20c00e3mxq.jpg         1\n",
              "2  rumor_images/6a77ebb7jw1ev20xu2excj20p018gn18.jpg         1\n",
              "3  rumor_images/0062G6IYjw1er1zfiinvhj30wo1407az.jpg         1\n",
              "4  rumor_images/5d6ed51fjw1eb8s33w2yoj20c808q0u1.jpg         1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 7
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "q9PJWG2A87dJ",
        "outputId": "848a8150-8bf1-457c-f415-d82619fb13c4",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "len(df1) # number of rumor images"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "7954"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 8
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "s3x7rXsP8ebo"
      },
      "source": [
        "filenames2 = os.listdir(\"./train_extracted/MM17-WeiboRumorSet/nonrumor_images\")\n",
        "filenames02 = []\n",
        "categories2 = []\n",
        "for filename in filenames2:\n",
        "    category2 = 0 # rumor\n",
        "    categories2.append(0)\n",
        "    s = \"nonrumor_images/\"+str(filename)\n",
        "    filenames02.append(s)\n",
        "\n",
        "df2 = pd.DataFrame({\n",
        "    'filename': filenames02,\n",
        "    'category': categories2\n",
        "})"
      ],
      "execution_count": 9,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9SWw95p98wPA",
        "outputId": "0112a48b-df12-4f77-ed31-f8ff95c9b76f",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df2.head()"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>nonrumor_images/61ff32dejw1ezpn9odko9j20c80f7m...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>nonrumor_images/66eeadffjw1eyz8i8z3e2j20hs0dcg...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>nonrumor_images/620beb06gw1eyl2duidwcj21e06k4h...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>nonrumor_images/61e6c012jw1ez1r01nnw5j20c81367...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>nonrumor_images/61b8c41ejw1evetlsoyaej20ic0c8t...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  nonrumor_images/61ff32dejw1ezpn9odko9j20c80f7m...         0\n",
              "1  nonrumor_images/66eeadffjw1eyz8i8z3e2j20hs0dcg...         0\n",
              "2  nonrumor_images/620beb06gw1eyl2duidwcj21e06k4h...         0\n",
              "3  nonrumor_images/61e6c012jw1ez1r01nnw5j20c81367...         0\n",
              "4  nonrumor_images/61b8c41ejw1evetlsoyaej20ic0c8t...         0"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 10
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7d2VfS1D89Yr",
        "outputId": "37850b2f-b4dc-4272-ba1d-321d1f0ef3a9",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "len(df2) # number of non rumor images"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "5318"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 11
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uZ42s8Ro_6Va"
      },
      "source": [
        "df = df1.append(df2, ignore_index=True).reset_index(drop = True)"
      ],
      "execution_count": 12,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_fIUquAhAZB-",
        "outputId": "ca35ad19-5255-4839-a924-f9bb5bbb2cfd",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.head()"
      ],
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>rumor_images/005Cp0Zcjw1eqxg1ipc63j30hs0hztah.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>rumor_images/720be4e5gw1eo6jz021qmj20c00e3mxq.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>rumor_images/6a77ebb7jw1ev20xu2excj20p018gn18.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>rumor_images/0062G6IYjw1er1zfiinvhj30wo1407az.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>rumor_images/5d6ed51fjw1eb8s33w2yoj20c808q0u1.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  rumor_images/005Cp0Zcjw1eqxg1ipc63j30hs0hztah.jpg         1\n",
              "1  rumor_images/720be4e5gw1eo6jz021qmj20c00e3mxq.jpg         1\n",
              "2  rumor_images/6a77ebb7jw1ev20xu2excj20p018gn18.jpg         1\n",
              "3  rumor_images/0062G6IYjw1er1zfiinvhj30wo1407az.jpg         1\n",
              "4  rumor_images/5d6ed51fjw1eb8s33w2yoj20c808q0u1.jpg         1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 13
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2pH2wtpWAZ--",
        "outputId": "6ad0e9c2-8ead-4167-ae7b-bf5c1b55f5d3",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "len(df) # combined"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "13272"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 14
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1-FVPif5AbDG",
        "outputId": "693c6a0c-69f7-4ae3-cb38-c1f4a2240a70",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 296
        }
      },
      "source": [
        "df.describe()"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>13272.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>0.599307</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>0.490057</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>1.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>1.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>1.000000</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "           category\n",
              "count  13272.000000\n",
              "mean       0.599307\n",
              "std        0.490057\n",
              "min        0.000000\n",
              "25%        0.000000\n",
              "50%        1.000000\n",
              "75%        1.000000\n",
              "max        1.000000"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 15
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xEICoXREAe7W",
        "outputId": "c7e892b5-7e47-4092-80f6-8919d5f2247b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.tail()"
      ],
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>13267</th>\n",
              "      <td>nonrumor_images/66eeadffjw1eynry0u92vj20m80es7...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13268</th>\n",
              "      <td>nonrumor_images/593bbc68gw1ezuivqza5aj20c80cbm...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13269</th>\n",
              "      <td>nonrumor_images/6298156bgw1ey7b8tsjeyj20c6099w...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13270</th>\n",
              "      <td>nonrumor_images/70e11e0fjw1eww3qmvoiaj20hi0atg...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13271</th>\n",
              "      <td>nonrumor_images/0065yqVkjw1ezwqa63fg9j30fa0bgj...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                filename  category\n",
              "13267  nonrumor_images/66eeadffjw1eynry0u92vj20m80es7...         0\n",
              "13268  nonrumor_images/593bbc68gw1ezuivqza5aj20c80cbm...         0\n",
              "13269  nonrumor_images/6298156bgw1ey7b8tsjeyj20c6099w...         0\n",
              "13270  nonrumor_images/70e11e0fjw1eww3qmvoiaj20hi0atg...         0\n",
              "13271  nonrumor_images/0065yqVkjw1ezwqa63fg9j30fa0bgj...         0"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 16
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Pm3W4A0BBFex"
      },
      "source": [
        "Total count"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "nwsJEYNoAnad",
        "outputId": "cd18cead-33e3-473e-95a8-2770276e8835",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "label_counts = df.groupby('category').size()\n",
        "print(label_counts)"
      ],
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "category\n",
            "0    5318\n",
            "1    7954\n",
            "dtype: int64\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Hr5bn68EA5zF",
        "outputId": "7dbbbd4b-32d5-480a-c63d-0bd3b3794520",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        }
      },
      "source": [
        "df['category'].value_counts().plot.bar()"
      ],
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f2a9bf69630>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 18
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "B8SOMjuFBIZC"
      },
      "source": [
        "Sample image"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Zu95Vqf5ICnG"
      },
      "source": [
        "Shuffle df"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tOkhf8xkIEQm"
      },
      "source": [
        "# shuffle the DataFrame rows \n",
        "df = df.sample(frac = 1).reset_index(drop=True) "
      ],
      "execution_count": 19,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Wz6egnsyIO6G",
        "outputId": "607ff419-e7e2-493d-c710-dea8ca55f12e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.head()"
      ],
      "execution_count": 20,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>rumor_images/8cfbe3ffjw1eqxgw7iiyzj20c809o74m.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>rumor_images/5fce79degw1ep55x5lkkwj20hs0nq778.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>nonrumor_images/6541fc49gw1ew1q86s7pdj20go0b4j...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>nonrumor_images/63136032gw1ev9azul72hj20sg11xa...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>rumor_images/50360241jw1ep6urpl68sj20hs0ch74n.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  rumor_images/8cfbe3ffjw1eqxgw7iiyzj20c809o74m.jpg         1\n",
              "1  rumor_images/5fce79degw1ep55x5lkkwj20hs0nq778.jpg         1\n",
              "2  nonrumor_images/6541fc49gw1ew1q86s7pdj20go0b4j...         0\n",
              "3  nonrumor_images/63136032gw1ev9azul72hj20sg11xa...         0\n",
              "4  rumor_images/50360241jw1ep6urpl68sj20hs0ch74n.jpg         1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 20
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "T4QGsffWIUje",
        "outputId": "97a5afa2-d652-4489-9d39-6a32ecf67fbb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.tail()"
      ],
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>13267</th>\n",
              "      <td>nonrumor_images/70e11e0fjw1ew2yci9n0nj20go0m87...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13268</th>\n",
              "      <td>nonrumor_images/644471aegw1eyotdtjiwpj20go0bd0...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13269</th>\n",
              "      <td>nonrumor_images/63207a53jw1eyvy1vl1zsj20c80c8d...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13270</th>\n",
              "      <td>rumor_images/a72e4501jw1ev0rmg2y2ej20r80kf0wi.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13271</th>\n",
              "      <td>rumor_images/0066YqL4jw1es7kgc5r1gj30f00qota5.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                filename  category\n",
              "13267  nonrumor_images/70e11e0fjw1ew2yci9n0nj20go0m87...         0\n",
              "13268  nonrumor_images/644471aegw1eyotdtjiwpj20go0bd0...         0\n",
              "13269  nonrumor_images/63207a53jw1eyvy1vl1zsj20c80c8d...         0\n",
              "13270  rumor_images/a72e4501jw1ev0rmg2y2ej20r80kf0wi.jpg         1\n",
              "13271  rumor_images/0066YqL4jw1es7kgc5r1gj30f00qota5.jpg         1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 21
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "X28HYdciIS-O"
      },
      "source": [
        ""
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RkVovi9qDrBp"
      },
      "source": [
        "Make a combined list with rumor and non rumor image paths last part"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QpX-qX_yGWgx",
        "outputId": "4b56ee06-cf68-4b7c-932c-ed7c25f9297a",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "filenames = []\n",
        "categories = []\n",
        "for i in range(0, len(df)):\n",
        "  filenames.append(str(df['filename'][i]))\n",
        "  categories.append((df['category'][i]))\n",
        "print(len(filenames))\n",
        "print(len(categories))"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "13272\n",
            "13272\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DQT75R37DViw",
        "outputId": "3227f1bb-83a3-453d-ad3f-031d324bca12",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "print(filenames[0])\n",
        "print(categories[0])\n",
        "print(filenames[-1])\n",
        "print(categories[-1])"
      ],
      "execution_count": 23,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "rumor_images/8cfbe3ffjw1eqxgw7iiyzj20c809o74m.jpg\n",
            "1\n",
            "rumor_images/0066YqL4jw1es7kgc5r1gj30f00qota5.jpg\n",
            "1\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TNMAZ1nfCzsl",
        "outputId": "44a1f9f9-2d69-4400-c15f-3e613b3d2368",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 304
        }
      },
      "source": [
        "sample = random.choice(filenames)\n",
        "print(sample)\n",
        "image = load_img(\"./train_extracted/MM17-WeiboRumorSet/\"+sample)\n",
        "plt.imshow(image)"
      ],
      "execution_count": 24,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "nonrumor_images/707e96d5gw1eythez54kkj20cg0gmaau.jpg\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x7f2a9b96df98>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 24
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMsAAAD8CAYAAADZhFAmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9WYxlWXae9+3hTHeOMYfIoSozu4au7q6hRTZJizItoqEmYZowbBAWDFiUCOiJ7+abX/Vqg4AB2RZsvVi2IRgUYMqixJmmmtVD9VSZWZVZVZkZOcR0I+KOZ9qDH/a5NyJryCq2upvZQK5E5I240zlnn732Wutf/1pbeO95Js/kmXy6yL/pE3gmz+SnRZ4pyzN5Jp9RninLM3kmn1GeKcszeSafUZ4pyzN5Jp9RninLM3kmn1F+LMoihPiaEOIdIcRtIcTv/DiO8UyeyU9axI86zyKEUMC7wFeB+8A3gL/vvb/+Iz3QM3kmP2H5cViWnwVue+/f995XwL8Afv3HcJxn8kx+oqJ/DN+5BWyf+vs+8JUnfaDVavksy/DWIoTAe7De4b0APFJK8B4hQEqJ9yCVZGETjXXgQQBIsfxeiUBKiZCiea9ACBCI5s3hbxavAYhT64do3t+8yXkP3tN8eCnee4QQy5/l9wnwgHfh3BHhGEJIhJTL9wpASUWkFVoL0iRevveziz/1/6lLOPWc8355rqaq0VohhERK8dg7rXUsxr2uDUDzXrH8vPcea8JrUqvw/c4jPHjvmI3HRHFE0sqw3hIpBd4xn8/JZwXWe4RSIAXdbpeqrsFDPs8xVQ1eIJUgiiI6nQ57e3s45xA04ywlzlmsc2ipqOuquT5I04yqqqiNOTUg/mQ8l2P7Ua9qnucH3vuNjxvhH4eyfCYRQvxj4B8DdLtdfu1rv0I1L/DeU5maojJUXqKlJEsTpPAI74iiGOcFURrhpMAAs7zAVR4pFUThBigEMYqslRGnCU4KhJIoIdFSIbVCSolSOkxeIZFCokQcFE5JVBQhI4XSGmcdVVVhjH1MwaQM3yOlJIqiEwUQ8mRSNYuAihRxHKNVTByn4Xy9QEvotrqsr7RZXdG88vI1IqkRwp061qeIB084Vl3XWGtJkgSlFL5RWuc83oGWkqOjIVJKJpMJFy9ebBYhDy4o1Gw2o5VlHB4e0m61SFspHs94MqHf7eKtY3QwZJ7ndFYGoBSmNmgkiYbvf/2vkNawenGTtcvnUEpw8wff5vr3fsBoOCNp9zmuSi68eJUrL1zj7t17TEczHt17xM6dB0gvydoJr732Gu+88w5vv/02URSRxAlJktDr99jb32c2mdBrd3hwf5vKGIyRXLj4PPcfPOJ4PA6LbLPICREWLaUkinCdIQw5WQC//f3v3v2kIf5xKMsD4OKpvy80zz0m3vt/CvxTgDObm95ZF07ce3yzsgnAeUdV18SRRkmF8+Dw1NYgUBjvCTPKL763uXaB8813NiJEY2mWVmChJGr5u5Dh+WBpBBKF8IvPqGbAxfJYSin6/f5y4JVSQQngsVVYCIFUwWopKVFq8fzi/DzWGUCdsk6fXXzQFpxzRDrCOYdzDqXkwmaihAx/W0crazGejMmy7NSkYTk2cRxT1zXOOYqiIMsShJTY2uCdx9UGJRX9To/ZbI5OUrz3ZJ0OwtXs7uxQHY8Z7u+TlxVnrl1mffMCq2sHbG7E1E5ghnt02m0ODofUpqbT7aC0xiuJcwKpNO++e5vtew+IowQdx6TtjDjSrK6tsr29TZKmWO+xzT1HQFmVeG9REqxZKEP4Ec1cWcw1ltf96WP844hZvgF8TgjxvBAiBv4r4F896QPOe+ZFTl4WlKbG4HDNxTkXlKWsamrnqZ3Deod14T3WORCE1fP0TT/1D1i6csBHlUVqpIjCjwqKoZQiUhGxjtHyZE05rWxSKpRSJElCmqakaUqWZURRhNZ6+ZhlGZ1Oh26ny6A/oN1uo5VESZASwGOsWSoVPiwWfx3x3oeFparwjQsVrhmEZzkS3oVVVEpJnufEcczu7i7WWkzjVoXxg7quEUIwm04xVY2p6uB6eZBCUuU5sZAkSMZ7+0jrkHhGewfcu3OX7mAFvOL3/q/fY/veI7LWKi+8+CVUnJG0My5eukSv26PX67Gxvo43FlsbnHN4Iaid43g0ItKaOI7JWhndfo+V9QG9XhetFf1eH+sdyODaeggumbUIHAJ3epSWPxKBFKdmyOKlJ8iP3LJ4740Q4reBfwMo4J95799+0meEEIhIY6oKJcAJgRfgrFvedOscvqqJ4xgpwVqLkycuD48NymLyBLfEL+KZD1kWpRQCiUAhhEZKgZQegUKrCKU0iUow3oKvkTJYIH9qNdJao7Veulpaaz4c0yyOt1AeKSXW2uXrSkhaaYsoUgQb8cMhlN57siwDD1EULY/dvIpbxCVKotGsra5RViUAxhiiKFoqbBTHRFFEURTMplPEmU3KsiSfzjC9Pr6qUQi0t2hjGLQyskgjvePOzZvUecHZ5y7xrTe/xd7uIX/07/6U3/xv/gGd7iqrG3PQAq8UIo54eLDL+HjMOz+4ydH+CIA0SzHehQktgo3fPHuWTr8DriRNY5SUbG2d5+G3dlgsL76JbT0O7+3p0XnsUTbfKYTDf8bh/rHELN773wd+/7O+X0hJb3VAFEdIIamtwRiLMwtrASCCC+abW+5BOo/SGoHACcvCoxGN/+49WNcMmF8MUOOOIVFCATI8LwVSSITwKBXijzhO0JHG1R6tVJjg/mQCSiFJ45ROqxVWZmuXlkkKuQzuF8G+kgLVKBjeNV6AJ9KaJI6R0p3omfisCnOiuEIIjDFIKXEuLB5KSIQIS0npHbP5nH7WIpISpRXjgzFra2vs7Oxw/vx5hNRL5bY2fNdoPOZ73/0elTGsr6+H70wSlBTMjg6J4xhhHWY242h3h9s/eJtzm2fwSnH30UMqa6nyihvX3+Hy5QtESUZ3pUflDHe3t7l/Z5tb79xifjxDy4huu0vaanM8GtHO2rjKEUUJ/W6f2tVkaXAJsyzj0qVL/Pn/95fB5XbhHmulkA2GIxvAKAypR3gRLO0SXDkV6n+K1vyNBfinxXuHVIKknZKlGbWpKcuSqqqw1jcrgMI5j7U13tcIH4HXCCuR3jSui0I1AewSoZIKJRVKSCQSHWJ3tFBoD1KF1VYJj9QCLzlxwyKNUgJjQHuBXxj1ZrAjGXN+ZY3PXT6Pc57xdE5pi0ZBJc55nAXnQOsIrWiUwKPjBGMD4hdLjfQ2KJDVeL84/0/zkk9WS9G4FUqFeElrHeIWKdHe4/AcC8lBWdFLWwg8aZqwurrKaDSi2+2T5yXttl7qqZQKrWK0Trh0+SKDlbUAHgjPdHLMbHaEPTignOeYyoCXTEZjJsN9/vYv/RLXv/c2o9EY1Uq5euUK3/3ed9jd3+HFl19EyARTGgQRRw9GmIkjkgmdTpezZ88ynU1JIomOFTqJaGUJSeShrDi3eZmD/SP6q6skWYYxFRIJQuB9jfICYT3KS04stUc4wHoirRAqWNPghjdo3k/aDfthZOHWKCVBeKIootVKqeuAPjkH1nrqymCMp64dzgEiBPDOnaAaH06yeudRQqEaeFQQELFTAG8IypUObpmWtFptkiQly1o45zDGUFYAAWZdrOJaw3OXV3n91at4LygrR2FyqqrGO4GpHUVRMZvNqWtDbSoWFrKqaowNQIIkxEZQI9EIr/iwK3dyQad+ORWVNsZ3KQvLEmBy0cDeUNeWWgiS5rV21mY+y0mimPl8TpZlCClw1mKtRWlFq92m3emFRUQqlBZUtWGwsc7BfMzGxhq7Dx7xve9+n80zZ/nZ//g/orA119+5ybys2Fjf4ktfeoN/+X//S6ra8bd+5is46/FOsn33PuPxmDiO6Xa7vPjiiwghmM5m1LUhiRNEF9bXBwwGHWZz2NgYcOvWLdbXVtnf3w8IpVfBaqDwPsRscRSF6zA2xEH+BCB3zjWu82JABZ845o08FcoCEEWqUYQS7z1x3CFONFKBdyJg/94ipELKBOc8oIKrZQRS2KXSnEZ2wKG1REiaeEE05tkjBUgp0FoilURrRZwlrK2usLV1nk6nx+7uDmWZU9ZRc8wmyJcSrR39boYSDiEVOo1oCQU+KKhHnLiRHiprcN5T15ayrMjzkqIomecG7wNy1WlnNMYhyCeudoJTwRjeO4QQSyWx1iKlImrAQQd466mLmso6vNIhv6MjVlfXuX//AefPnWMymaC1Du6jD+5nWVcYY0iTFOMMw/0hWZahNVihUHHKB3e3UUnC+ecvk8/n/Nmf/wV7oxFJp8sv/d2v0husUhSWq9cusHX+IsOjQ7SOee7i8xztHbK6usrrr79Ot9vl+PiYo6MjvJVMZyNarYRurw3C0et1UFowGh3yxmuf45vf/A7GuBB5CgkNNKyVACuwrvEInD8Vv9Egj0GBnKNBOp88R58KZZFS0u93KasKayzgybIUpcMKXNcWa4IVUUZh5Mmk9V5SV5ayNHhvl8qy8Lu1lvzMz7xOFGl0kzwzxlAWRZP0lE0iMsQYcZJw5cpFrl29QqudsjJImc1GGGuCXWoAAiklEiiKGu8kSgZr4FEBY2zmsRBiuWClOgorfepxnayJrcA4g8djjEFJiZBuAfby8avdqdWwSREIEVZUrWMAIk2wPE7ghMd6R+wEgyRDioATSSFAeqI44dJzzzGdzlBRFFZcwuISxzHWWoqqpJW2A6zvPN1uj7oq2Dx7kdnBIXfev4fD01+7j0wTVKdHa63gC1/6Mq9/+cs8evQI7+GlF1/Ge0Gn3eHgYJ9L5y+y2lthZWWFra0tjo6OGgQyYvfRPlWpUZGn221TVnlAEkVEPis4e+Y8O4/+35AbAiwh7aCVwhmDMzXCCUSj+KKJ5YI34lB6sdhalPopsSxCQLfXITMGIQR1XdPpdJBSMJvNKfKKwpfEscBp0MbifJPtd2Gin5aFZfHeI3H8/M/9LS5cuICOFKJJ3JnaNOhJWHWM88F6CUGWJcRxhBBwYWuDqrzGgwf75EVBWZbMZzOcc8EaJRFIgW/iBvioS/TYuYmQ5ZZiAXF7IgUISayTkFz0zUT+5BHjMYVpjioQWGuxzgbYGIhkhMMihSdFcKbbIxKNlXMhWx9pTW0MMoooyxlHh4ec2dxkns9J05ROtxusYVEyG41pdzrBsqYZajVm9+EBImmhpGBt6yLd1VVe+dm/zY13bpGXNe/d+YBHD+7zX/yX/zkvf/4lhBAUec7x0TFKCl544YWA4gGdTof5fI4QgvW1Fap6StqKSNKE/soKQkiUypjPaqTQHB0enyBgPiCjWilsbbCmxpvGciDwLixIonGlF4ikc65ZBJ8cIz4lyiJY39gkTRI2NtbpdjoIAfN5zsOHj7hx/SZlUSwvWoagAQgQs1bqBHBt/HPZwM8GR14VKB2QLtnQO+IoXHpwlcQSdmywq8Yke6SWfO7a81x5/nkEnqoyFGVBXdVY5+gPOngCzn+aCeM/oi3+sYfTdAuBCvjEEmU7heB8os6ccsMa7fS4UzmgABI4wkqa53Nmo4J22mJaVHilqE1YcNI0wbowgpPpDKUidnf26fY6WGdYGfQYjaeMj44Z9PqknVb4biHwUcyFl17mVzpdrt+8gYlTShR+ltMdDHhubY211QGvv/oFtNLNOIdEpxRw6dIlkjheupCz2RwpFa1Wi1df+yLzr49Is4jBygpxktJqdfjg1h3arR7j8YyqrMJ4EZKwWgqiJCLNEmrhyE2JRyBlSFI7Z/E+uOO+QSTDUDqc/WlAwxAcH02YTh8wPBjyCz//s2itefv73+e73/ke29v3caZJpglBmmak7Tbt/gAtJUKHeMMYF9wZZ5ECvJdUXjAr6xDrLD2ikxnYULbCeZzidZ1+lBJ0s+hEWtNupSefPz2Zxanv/MhVfvgZ8dhTH1aKz5bEDwrT2NHg8knQUgerKiROeJyHdtpGEwWgpHTk0znj6ZQ0TTHdDu12m9FkzPVbt3l46y6/9Au/SCFL8mQGwtHutdnY2AwsATxFWQQXzTmMElRxzLh2bP/gXe7ceZ/f+q3f5LVXv4SW8jRdL5ypD8r8/JWrZFmGlJKiCN/X7/cZDAaNQo24cOECxtZsbmwwHA7pdwOkfO3aCxwOD5FCN3kyj1AhA1u7CuMNXgQU0C2srgsuvpKNi64ktTFLGsynDflToSzOOu7euUtVFty/e48yL5hOxrx7811Go+PAZ1IKicQBMzvFAoPVdawHW1uUVHhX4hrfVMiAq3vnOD4+PpXo++tTSZ4meSzR3LhyxtgAhxLyUHVdE0URVV2h4wjhQ94nTQIG1mm1sN4FhM4G391Yw0q/z9rKGrfHN7hz432Ojobszvd54Usv8dILLwZKCYGvJpRi52Cfu9vbTKdzqsqwdnaDpNNiOp/QbneaXJf/WM1vt9skSUJVVURRvESmokgsEmVUteL8+S1Go2OMsbSyFiuDVfb39vjyG1/hT//kL/BOIolJ4wjnLcYaZtOCunbYyiGEQp6KcRcxp3eBjIu3aBWfcOOeIE+FsuADSmONwxrPuzdvYYyhyktcHYIz50BFcul+CR9WeV9bbIPaLG6MaL4T73HWcXR0FII4HTLkiyThE07oJ3DRP7wE6HMBlUNZVUAUKBxKhiDfh9yOqS0IQV0X3L79PmfOnGVtdYWyKIiimDSNEQjKCqxzXLv8HDsXt9norbOa9nnrj68zATqdAZtnzyJlSNo6AXlVIrQKcZiSzIo5o+mYOElO6HriJIY8jUZ1Op0ToEQq2u024AjJkPCYpi0GA4HWEfv7e3S7A8qyxljDufPnufPBXUxpUEITyRjrDVqF4D+OUxARxgRS6SIFoHVIEQRmdUDKhNIh7nSOJ8nToSyAqx22diAUs2lOUeSUhcG7EJgpKbHWBei3yaavrqwwGk+RXpIkFbJRGOtDHsY7gUZydHTEIu3vefym/XXlP+CjPxpZhCnO4ayjrEqSJOH4aESv20FYsVyp7927x+HhIf3BACkFaysr4CzOWvb2drl08SIN5ZNYCirjWOt2aXVabD94wGvXXmGQDMBF7O0cUOYFaaYRSpBEMefPXeB4MkPIOcaVlEWNR5JmGUmSnJQhiGUu9sRVPcXPW/y9hBEJoI2SglarQxwn5HlBu91mnudcuHABIQRHh0O8MyAkSiREKsYKR1EWgQyaJoiSZTyklGqYCRYa9qFU4LE4L7BYniRPhbIIBJHUoAVVVYOXWANVfaL9KoowdUjqRTpCScnmxgZJnLG/PyROa7wUWL8wueBkoLsMD4Y46/BSPtEJ+5vWg88q3vtAOLQWLRWmrEjimLo2lGXJYDBYvnc6Dcm9+XzO2bNnuHBhi+tvv01/pY9WcrG2IpVCRmDLgjiLeDgdMZvNuLh+jnvTA969fotzm2vEKXzpS18k0hG192GB8xJFhBIeZwoi3fDSnnANCza2926ZQQ+fOM3YDouCd7CysgLAwcGQXq/P3u4O+XyG9wFBNXVBbQy1s3gcUaSpq5LpdPrYMZfjZyqklkgl8NIS5tlPibKY0mLrmjLPqY3BVQbTJCiVDHkMgwyUhIb6IhBsbZ2j027TOZ6wc3jIfDIJdSoAOKRQTCZTjLWkkT6xKk/ytJ4CrfkIE6HJH0kZuGwh/vA4Z5hOp0gV3M9upwXOISVcvHA+UPGnM8ThIdP5nL2DIcZaVlcGSybCwuIaaxkeHgY4O5X4xLO21uftD65jZM29D+7w2s98CU8oCrO1CQlYHYGFlU6PfF5Ql3OEkss6GrEsm2DxH957JpMJSZIs44iFuyQahoVoWBfzeY5zjqPjQ+7evUOWJXz7299mXuYkmSYyFd1YsDfPcUKE2qN5gTGWsiyX9CXnHNYZ0jRFaYmKNELJkJ8RAul+CvIs3nuKeY6tKqTzuLJGOg/WhZVPSOqyDrUlQoScRJRQzHO++MUvsrm5yfv3HnLj9nscjUdhpfMNe9ALRuMJZVnRzbITXxqWeZHleTxlscppXz9MotPuRAjLyrLA+ZrR4RGz6Yx+f5WqtGxtbbG9fY/t7YfMZgWdfpd2u0WaxFy7eoVutxdAEe+pjSPPc3Z3djk8PCKSildf+zzX376B9JJf/dpXabcTPtjdZjKdU1QGX5sAENQVlalRUYzHkyQRkgTVsJ6Bj+WE1nX9WMGcc6G8YD6fL8sbAsNcNq979nb3SZKEK1ee51//P/8Wi6fV7bAiM54/f5GDb30HKwRKCqqyxnpQSjcQsSfQo4Irf/HScyAgryqUVlTWMpvPnng/nopWSB6w1iwThc5ZoihGCI2zAms8RVFhbVh14jhmfX2dz7/yeV5//XW2trbY3Nyk1+0GZump73bOMx5NGB2P+BCW9OQT+kn/fIwsVtvt7W0ePHjQEP/E8jPeByp7HEf0Bz3Ond9kZaXP5plNPILz57b44he+wLmzG1y5uMXL164w6LQQ3qCUxBPqgSaTCXmes7K6wqA/oCgLnrt2hUfDfTa3zvHqG69x+cIlfG0Y7u0zn0xpZxmddpssDYwAU1WMx2OEFwx6fWKpWNaKfEygJ4Sg1Wotk6eLx9Fo1BTQySVCFUUJ4/GYW7dus76+SRwn7Dx6hPAeJRVCKqI4RikRuF7C4VyFdeWS++X9Inj3OGeZTmdkWYtut41SUJYT8OUTp8VToSzgA9ltUSnZJNm0jKBhHAvC4MVxTJZlXLhwgW6nu6Sg9Lodeu12oDUsyJVNxsMYy/HRUcMdC8j70yQhUXfyAyf+dVEUvPnmm7z11luP1cBA49A4T5akCDz7B7vkRU5VlQgEs1nO9vY9xkdDbFHw4IMPcEWOJhCiFvXsw+EBo9EouCcSZvMZe8N9xvMJ/+5P/pA/+IM/4K1vfoub129wsLdHK8tC/YvSaHWiFEkUk6UpWklCfaY/8bzE49mnhWvkvV9WZJZliXOOuKml8T4wDObzOXfv3uPMmbN0O12m0znj4xFShEW2to6yrhv2T2CmB4WpA7NiqazBslR1we7ebkBcy5LZbEKZzyiL+RPv01PihgFi0VxCNvBeMNGO4H9LKYhjjdZyCRPv7e9RViVZltFKEyTBP7Y2kBLDxAv+9dEoWBbvfaCCfdxq7v8Gg5XHINam+YOggTmDkpxUgZ5IVVVICfP5nPF4Qpb0KIoRyVbKdDai0+3QSlO8c3xw+31irTlz4XxD/3DY2nA4POSVVz5P0rhEFy9fxHrHbDYllTEf3LoNRcnx/JgbN27wd/7uf8LqYIVyPiOf51RVRV7UxDpCeYeWDYy9ALY+RkKRHMuiOSEE7Xabdru9jC+EEIzHY9566zscHg753OeusX9wiDMhXoq1DkwAPDffuQUNpQUCeKB0KPH2LhQCBmjYNbFfhDENq1n0WFtZRUrBm9985xNv0VNhWRbUj6osUVLS63aDPxtHKCVJ05h2OyXNAnU/awW6xXg8Zn9/H4A4jmhlacOp8svmDN6HpN3B/kFzsM/oiv2kxQdlmE6n5HmxXA1DUw21DH5Pu27eB9/fe8/62gavful1zp07z3PPXUZrwblzG/RW+kymc8qyZn11A61jvBeYhoKvtebFF18kTVMm0ylRHFPXFbP5nOl4TD3LObu6xjyfU1UV0/mcWTFneHzI/sEBk/GYuqxCHqOqmYwnpEnyIQ7Ex8uCkwWwqDJdKFGY+FCWFdPplE6ni3MepTS7e/tYYxDeY+qaWV5QG4eSEe12BykVaZphrQ1dXmqzRN4QvukM5Dk42Gc6mSHRDHrrvHD1lSfeoqfEsgRkyxE6u6SRDjXU3lHmOaaStFopkQrU8TTS5LMpg36PXreDtTVRHLGyMkAhcWZBVLQhaNeC4XDYADKhhgROAvq/btOhT7+gT3j+Yw8TKBpeeKzzHE/HRDpiI0mQjQuxUJalhTmVq+h2ew0Ma8GHorPte/dZWVnh3r07jOYFd+7cJZESjWdta43K5Mg6RkiJihT9bo/pbMq3vvFN2t0Ot997j89//gtY6yiomORziqLGWgGlYG/nkMpUjI4Pqa1FSI1SEUWRMxodc+XyFkv63hMkJCVF04rJLZ/znmXptRRhQXj55Zd48803+crP/Rw7O4+I0xjhPFVVgJDMqyook4Q40nT6XepHQbkFEl+rwDIXAikUs+mMfJYDO+AhzTKyNH3i+T4VygKh40lRlEil6PV6TJ1fUsuFD/mToqqRumZ4cEBVV7z//nusbazz2uuvI5Wg1+uhhMI4u6S70EDMx8cjnG9Ikqd5WacmtvjILz+cPBGV/jBPCpZwkcNjvQUrllSRk7r+MGkWfvnJF0pcw3CQaLyH9Y2zWOc4c+4SyTxQgzKtObuxTqfTIk0TirKk1Wqz4JQ9uP+A99//gDe+/Dq//Mu/zHB4hHeOOIsZjUahfMI7XGUA2Vj0wLvC1Zi6xrsAzmRZGgr5YHkNj/PgTg+CX47J4nER2AtByNafO7usc+l0Oty4cYP5fE6iNGlTQoDS5PMZ5SIhmcScO3eW/f09jo/GTd2KaArbPN6FBWohpq6Z2Z+CPAuAVpqqLMF7pnHCfDZHJhIdhQSkjqKmtZGjNjW1qZlMpwwPDoIPqhS9fvcEEVlYDRGUY3gwpK5qVJZAwzL+UWbjl4zjZX7k0yg1JyJ8YEhLIWi3O+SzvLF2YaIVRUlZFsvuK6dLEBaw687uHnfvbfPo0SN29w8YjSfM5jmOYIlffeUVXrj2AmkSM53PmM3mZFkrJPSs48qV5+n1eqysrBAlMXt7++DhwplzFKMJ3luEDOUTw+EBZVmEuLBxe73zdNtdIrnG+tr6Mub4jCOwGMXwXQ0reT4v2N7e5sqVK8tGH3jPgwcPmM6mzIxjY301kEHrGsdJR5qyKEiShPXBCvW8ZDav0IRuPBIZ6obEx5d2fJI8FcoiBERJjJCiabBXhIKoGlSkMbXB2HCzLB7pHKZZBaz3WGfRStHtdoniiNmsbFYnCwQe0OHREXlekGUpn8Dt+xGIXyqNEB5/KqezvNYPXzsEzMiHZgrWNGWw1qFVQCKqqmYymVGW1fITiwKmuq4pioL9gwPmZU7azdiMN5FpQrt24B1lPmNlbb84XuoAACAASURBVA0dJ6g4pqMioqhpwOcDSTXSmq2tLXAeg2UynuBqQzWbI0zI7dRVTi09d+/eJWsntNsZWiusqzGmwtoQu2h90vTi0+VDuS7vyPM58/mMu3e3OXfuDINBj4cPH7K2toL3gcZvjEFaT1EUDAYDpsaQpKEUHWA+nSMRtNOUMxvrPHiwg/U0TGm7bI64gOcXsdOT5KlQFg/oTKNSjbWGylXIOGRWcU1bJAIaYZ1DNQFqmmVNLYZDAYNBn263w9HhGO8d1oKUoWZhNp0znU0ZDPpNPf6P4Sp8eDTGoCP9ie7eRy4eWEROprbUVc1kMm24Ua2lUlRVvZyEi2z+om/Z1VhzplhnXs0ZHh3RWelRG8lKv8d8MsG4mtF4xOrKakjG5XmotxecmtiBeBbc1mMipdgcrLF96z2SJELUBQjP2uoqOpFUZUHWykLPAenJ51NGRzPUZ5h4H7l+sYDOPdPZhOFwyNWrV5BSUVUVR0dH9Pt9bt68yWgU2iUJKZhOpyyaG0ZRhNLBQ6mcpSwUWa/DyqBPUZYcjiYNZV8sj5Wm6bKL56Ik+5PkKVEWT+UqVCqJZBpaIlkNQoaLoFmlZVgFRBr81KPjY0bjMbUxxImn3W7R7rSXN37RlVFKSVXXDIeHXLywdYp6cXL80yJ+SAjZuZDwqqoKHekTf72ZhAsEKxyEx34RzecPh4cMen3+8i/+km6vTa/XpypDuXVZlkuLchpFKsuS7e07HI73Sdsx1nuqekarvcbzVy6DMURCMeiExnShYrBuiswWVYanZy0BgWq12VhZ5fb8B8T9BGNqOis9VtdWmc5HaK2Da+gdQnriKKLf79Fqtz58gz/0h/jQqItllj/EPBmrKys8fPiIsgxE0dFoxKOHD/nGt77VAEKhPFxFOiSx4xjrHf1+n8l4jGzuvalrVBLT6rQ4GI2WRWuhC46nqqrledV1/cT7+1QoiwCUgtX1NRASS6iLlkIRGUuUttBaIFWg4rdabZI4RqnQ0O748Igiz6nrEq0FztfIpn+Jsx4rHHXlONg/aKoH7bJm/iMn4n5IYLmJObyQSyLhouNMmIx2Ec2DWKTxBF76ZcdIZ2uKfMbb97d55/Y7SCxvvPYGWgVkaDrLmecV+XSK847BauB3HR0ekkUtzq1eIGqlpJ0Oz13wtFsdsiQJkIb3gSrYdDnJ65rahxxWMIiBAeyMwZiSo537pMqRxJq03aLUUOQ5IktY66+wt/OQONZgHb4WCGK0jojbkkgvuHs0Va1hiEJjb1jUq/jlGIXcx2w+4/joKMDUZcnB/h63bt3ivffe48G9e6Q6pipqZGHxddNWTwbUMySzLaPZjPF0jnKeVEracYxVISfTbmWU1mK9QPgYU1cYU9Pvd3HegjA8SZ4KZfECrICkleFpEkg+QnhJFMW0WhlxoojiwPsRXpAkCaurXYyd81dv/jlZq81rr79Bq5U0WXqLEAFPDzkXwdHR8TLgX8rjwMx/GBLWrNDWOSJoINFFt5mm7JeFyyOWKZMlkO0949GYvb09fu0/+zXWBj267S47OyHbvLe3y3hyGWcM12/e4Pnnn+P5y5fotjskKkLHETIO9fT5ZEQ3ihGRbjppBqsmCKwAV4c8hbeOylZ4C2VRcXR0QD4e4+Y5/XaH9+7fIR60GU9GVLVBVzXffeu7zMsZG5urtFotZpNpWJUb+o1SGuc8VVXSyrJlasstuvMrhalrptNpoMhIMKZmMpnw4MEDbt26xTs3bzLc38XY0FO5m7VoJwnVLG9aWYVRU0qRpSm1MZS1JS8K8rKAyuK1xpg2KSFfl2Up89GoiRFDd9HNzU2ev/IcR0dDDg+HPL4BxOPyVCiLkJK030M2tV2SZucIF9r1tDstOp2Ubi8la4WmDkkS0263sc6x82iXKD1Hmka02glSgTMOJVnWWTsv2N3dxTmPbrL7Hxt/io/XF7/875PFNs3NFy1cF4iQ96HwqK4q4iRBIZaMWgiQ8aKeI4oiNjfOsLG+QbfTwrvQkrU2NePJmFkxQypJaStuvfcuZ9ZWGQ8PEVpxfLRPkiasr6/TylIClmtCxaSOmzZSmljHdNod9nf3yOcTPnj/faSXHBwMGU2PKcdTqCFOMsYmZ1hPuX3vLrapkjw+PiZpJSAUo9Eo9EC2FmcMm5uby2bkofNmKGv2PijPdDplZ2dnyUc7OjpiNh0xGh2zs7PD9vZ2oMBUNRhHoiOkELx47SoHjx6hBPR6HaJKUdUFZzY3WN/YYHh4yHx4iNIhJxU1W5KUZUmrlRDFEdeuXiHb2aUylrIwVFXJxsYGG+ubDIdDyvKnwQ1rINN2K0VJgTE13jmElw11RS3eSLfbI00Toihia2uLTqeDtZbZNEdrzfraOkrKgP+LU13qhWB/fz9UTEr9RDTsk9jH/tT/H3nN02SHw94hC2uyoJxb6xiNx4EImiR0uj0g1JGElqsCZOgcH8pePUIolA69vWpTM51NKOsSLTSlKbFlyWQ64sGDezwYDrn44uew1vL2u7c5c+YMSW8F50NnzFlRM5uPUQJWel1W19ZxzlDMY6aTMfs7e2zfu4MVFld46tyyt39AiWGcT7Fa0usNOHf+LBcunEPHMVILxtMRtg4Ez8rapnVScLesNQxHIw4OhhR5Dnh2dnc4PDzk/v377OzscHR4iFKeL37hC0zG45DbiWO8daEPWLOAntnc4ODhfbQC6yqMKfE4nnv+ckhsCkFZV6FxSMNStk2DiqquwBrmRcHezg5lHRKpznmOjo45OPgm0+nkU9G7p0JZ5tMZf/Zv/hCpJNYH5Qid4EGpiFbWptNpkRdTev0ug8FKWD1b15lOp1hr6Hb7bJ2/yP37O0ipMbYEFFIu4gfHcHiIsRbtFFp/DGLzqS7YSe7m4z/aFC45mM3nJEm8DMTjOCHL2iAESmuOjo5RUUSapuRFQV3X9Lo9EIH4WVY1iNBkIU5iEDCdTxkOD1hdX6UqCyIlGU/HlKYiz3POnzlPVRgOd6ccH1UMVhTDwyH7+wck7S5CSbbOroWOL0pT1jVOCa68eI0Lly/xuZdeYG9vj7e+c4O94ZRiNCGOEtY7GYPVNdZX+mRpTK+XoeKEJMvIywDRLnJADx48YO/yLr1uPyQzi4L9/X1u3LjBrXff4dHOo1NBdUhAfvGVFzl79gzf/e53WF1dwVnXtJvyoYeYFjgsvmmxG8eCvDJ0Wxnnz2/y4P42o8kopBdEk/n3AhUnyKarj/cBZjZVTVUUOBkBgu3t7WZ+fHqk+qnKIoT4Z8B/Cux577/QPLcK/B/Ac8Ad4De890cizKL/HvhVYA78pvf+2596Fs7ji4rSEzYJ8HXIriqLQFEWFq0ThgdTdnaOEPL+spfvsjyV0JRhZbAWas/NDCEkEQGV8k4ynU4DunKqW/xHB0k89nD616WSfAIcvEwWAkVRMpvNSJOENAs5jV4/WJOqqjk8ekiSZTgvyMucuqxpt7t4D1Vdk+c5xjpMWT/Gzi0b4qBWgjRN6Q/6nNnYwPM2UQ2dtMskW+Gtb93k9s0dpKq59uLzRGmb4/GIg6Nj9uop3f4KZVngbUU7TUi0Yu3MOmtr60xrRXn7Ln/npZe4cuEMh3uPIFIoYanLnFY7Y7C6zgd3tznYP6Df69FutymLgrt377K7u4dWOrQ+so4kSYjjmMlkQpZly1yHNRbvHS+//BKj0TFlWXLmzBkm4/ECa8ELiNM0WAcpqE1JUU7RkeDvfe2rgGcyHlGbahn7LZBHpcJmVQjwzjGdTAI/zHucMU1CVTSN9076RH+SfBbL8r8Cvwv881PP/Q7wh977fyLCbsS/A/y3wK8An2t+vgL8j3zKFnlhkjUQr1ggVCKgNlIF0pt3VFURcifGhIIeEUy9EIut2cA4jzGOVqvNcHjcEOdc2HrCwWQ6ZTod0+kkeB9/xEIsC/rEMpfcvBDOcdH4blkaQWg39NgXsKihGbG7u8O1a9coi5LVtVWkD7GSkorNzU0KUzMcHTGZzcnihKooQ8BdVYwmE7LDUciD6JTaCGThcU5jrUSrhCzJWFlZQQLtXopQJWm7xepGnwc7Q+5s3+WVV6+x9bmYyVHJ/QdDWp0LZK0W82JCnVeMD46oul22ts7ihSRONVcubXBpa40oidFK0ml5irLC1CV1pUEqVtfW+IN/+4dMxwFiDk3YQ/ed7/3g+0jgzJkzATFzAe7OsghXS4raYcqwY0DaarF29izvb9+jMDVnzp5lPgs9l4tZjq1NKCPXMSARXuKN58rV53nh6lX+5E//BOMcSgq0cCg02jq8dUiRBQXwEmMCACEhxIzeoFWMF5IasP6THOwT+VRl8d7/mRDiuQ89/evALzW//2/AnxCU5deBf+7DEvt1IcRACHHOe//oSceQTeBpmy0kuu1OKElVbskWdc7S6bRDH17PMlMcRWFvFO8EzoX2nP1+n/v3H4aJ25TjOu+Y5wXD4RHnt8490T9dDFpV1VR1IOgZY1BaY43BOR+atDlHVZUhGaYUeeOXF0XJw50dDoeH5DYEv5ubm0gvqOqA+lS2Diig99TGM+j1KWdzirLENAVfNKziw8NhyLE4x90PPmBn5z6PHj5g0OvwwtWrnDt3hvW1TcajKd4pZvOSJIuIU8HO7h7/+vf/jJXVNTY2BxwfzcinNZe21kg7A3pJm167zWwyZmV1gGgs33w+xxwbBisD1tfXMdYwPNgHH5o7HB4ecHg4pChKjKmpqip065zPAxW+aZU6n89DB87QyI35fE5RV0gdVvw4iknSkEeRQnL58nM8fPCQ2cOHKCEx1jaUfc88L0Bp2t0uX/va17hx4wY3b9xkY/MMzgYrJWRY5pLGeimlqeua2XTeoIFBobWOSdOUyrrg4tlAZH2S/LAxy5lTCrADnGl+/7jNV7eAjyiLOLWnZBxF1LVBSNVQ6ms8At+Yaec9Wqtm0OySWLhgqC42NFUqKE673VlyprxrmhG4QNXf3T/gi83eKQHzfzxRuGin5Lzn6HjE3v5+uMFVSbfbXZa4hvPW1FUVXELvmM1m1NYwaZpE1M6SD4c459g7PkYJxXQ6xdQ1o/ExvV6XNM1AKqaTCa0kZT6dBcBiNuPRzkOm0ynTyQRTVySR5vDgAC8sk9GI2WjUbJAqsU4wnRScPXuR/YOHfOUrr/HKa/DBvQfoOOHSc5e5cf27tLOSrXMrdLIWykO6sgLG8mj7Pptra8goZm1tHSmPQhPzytDKFEo6xuMRSkrG4ykPHu1wPD4GD0VVEJuEsiwpiqJZvMJ4eGcCZCzAFDmekG2nYRyHHtIhwVjVYbOq8+fO8d7t280mvGHbv9AJ35O12/zyV7/K7u4ub19/G6UVRVnQFDORpjFZljDo9IlUSGJPJlOm0xlSKkxTFKh0jHFQVwahZAME/Zgz+N57L8THVVl/6ueWe0q2spbHS7wLfYjzPMc6h7XVIqFMnITYY57Pmw6HEiFKpFSBcdtsTNRqtZYb+iwaXDvnCN1RBdvbD6hqSxKpJgcT6s+Xu2ZJSTEv+eDOXba37zM8OibPC5wzZFlr2WABoN0KtO4kTcOmr1GCjlPSdpcoipBKUZblkl7vjKPT61EUBStrq3Q6LZy1ICRFWVKaknkxo5VmRFqS5zOqsqAuS5yp8dZQ5nMWfmer1aGVtSmLClMHAOPqNRis9BFJTV/EyATWNtZod1pE0VUubW3w6MH7eBcsxO6jPSZHx9y8foOXXniBVhwxGPSC+6ckOzs7/NEf/1FojDEZMeh16a2sAh6lmqbj2KYrfeBetVotkjgmjmNMLfDSLXdgM7VhXhYY56jqsNuY854kSSiLgre+8xa/+ve+xvsffMD773/QNEUSKKW5cPkyv/ALP88f/eG/44O771HXJVEcEUUReT7HWkO7nXF+6xy+tmgB+SxnOp0Her5UOB+2MKmNDS6685g6NGf8NPlhlWV34V4JIc4Be83zn2nz1Q/LIpst1cm+gEoppNDLpLf3nna7zSyfYU3NkkXS7Na1sDLGGOo6BMXGmEDR96HphXdwMDzEWEcchdS1tZb5PJSThuw+3H/4kDe/8Q0mkzk7e3t46xA+uH2h9FYtt6FzNlhEGpKnUGGTU6mCJTw6Ogoxy+oqcRTqJXZ2H9FuZwwGvbB7cXRCyZ/mU6pqxmp/gBKhg0vYhsOFYzXEUWcdg/6AJEmJooRWK6Mo5mxv36OsLLPakhvP4dGEW++9i8ehpWVj8GUO9g7YW1khiVOuv3OT9f5KGAPncM5gnSWKJHlRkCSaN954jTNnNsBZpuMx0zznwcNdXnrpRSblnCQLVBghAonPWU+e5w0gkeObBnfe1FgT6ECLNdwYw+7OLi+88AI/+P4PuP72dX7+Kz/Hb//2b/Pd77/Nndu3ubh1ns+//DJpK+F3f/d/4Ob166ytDcjarcAylpJ5Pqff7yzZEmWZhxqX2lLXBqWj0N7XgZChz/MCjgnJ0k+XH1ZZ/hXwD4B/0jz+3qnnf1sI8S8Igf3o0+IVCPBhlmZI3dRmNKZaq6zhhTVumJS0swxjwnbc3ksinYQBEMENM8Zg6opIK4o8BMvBTQsL8v7+fgOYBDcg0hErKytLdKwyhlar3TRuqKmrGmdscFmiFIXCGYclFCYtWgnVlcF6h44j8IEQqbViPp0zHA5pJSkVFVVdsftoh62LWwwPDnHe4qlCH14hKOc5g26P+XjEzu4Q7xxpHIO3wRrY0JDcmBolBN/491/nK7/wC+zt7/Lg4Tbf/OY3sF5ClJB0eyStAQfDI4ypyBLNH8/+lNV+h7ev32AwGPDqa6+ysTLg2uVzgVU8tWFrQO+Ik4iWz8iylFhHOBPGLUtSVKQYHg+Z5vNQ4qtiBt0B83zGZDpGNHGDEMHNTuKISLRD4xHvqJqeC8573vz61/lH/+gfcu/OHd78q7/if/5f/id+8Rd/kVe+9CovXL1KpiNu3rjOzXdvcH/7ARsbG0gtyLIW83yIrOqm3xxoXTObTqmKEuEs+bTAeYFuXPWslREZy3g8CbksuUBEP5268Vmg4/+dEMyvCyHuA/9doyT/pxDit4C7wG80b/99Amx8mwAd/8NPPQOCm1SbCunChFdIvHPkVuCcQQiHIMLVFbYssNbgvURJjV3gi0gsFeAo8zHtLGJyXOOkRGmNcR6BYbi3i8lzXBQa9yEFWgQlq63Fe0Exz/HOU+U50rlwPKWw3mIad6O2TbZXQJKmtLIUHQW+mtRi2ZB6XcCg36cVJaEUVkasb64HUAAF1hI2+LN460izHv1WgJg7aWgMIQUYU1EZSVxLChOOfff6dR59/zqTwwOufeFlfuaN17ndu832w0e4SLF6bkBZO954/Su0shamrtncXMe5muHuDlefew6sJVGWiZszKXJayRnanQ4Q3OLx8ZRIR0ivmg1RIyJp8REUGLSOSOOECMF8PqbVibkQn0U24IQzFm8skdZhA6f5nDIvwr47JnTH/PbX/z0vX7vCf/33f4PPf/5zfOutt3i4v416B168+jJf/8E7fOOv3mQ6nXB8NKZIE5JWhtSOojAk2qOIGPTWKcuS6WSMMWHX4/+fujf71Sy9zvt+77CHbzhTnVND19ATSXHSQFIybUuiKWtyEgEJchnADgIjgGDkJkDu8kcEyJWAILmMnUBJQMOAE8AxkMiyIEciW2KbIsWeqrtrOOfUmb557/1OuVjv3t+pJrtJI0RQvYGqOqgzfd/e73rftZ71rOchRKw2IiioDOKlG2UwUAEpZbmkn7xOfxo07D/5mE/91o/52gT8Fz/5137k+/oDMRMPUXJsey8sXlTEWiHltU1LSAGjC1IU2zd5sL3blZAwp9Mpzj1GKYu19PxvQaK6jpTGbF3CpKm22Ww4PnnGH/3RH/Hs2Tnz+Vx+Xz6m+1qof62D6J0xKC3NRmVEvC0m6SA/Oznl1tERrqxpNzJ3snd4QLPeCAcwJUJqSFHqmuADwXWMRiPats00mXYQdtAorI+oBLOTM8oAf/J//J9899vf4eDmEZ//8pf4u7/1m7x7/Bg7nXD/zj0Odm7QdZ4nT54AmqurBWVdEFUEDcmW7N95Ca2gaxJGF9KBJz2vDawUnevQJExU3LpxCMlg0aiB4W2Yz85IQTwrow/c2NtnPBoxm805e3YuvpRBAiUGIUH+43/yT3jn4Xv88t/4Zb7xjW+wWC54/+H7/C9/+IfgEjEE6qqisJarqyvi/IqyLvI8isdYw+npCaORWKwrpfHOE3RLCkK1CUFqpo9SnXQ+XT4VFP3ehKefyQYIweVx2Sgd2Ow4JXKeScyM8nf3TSWSqMi3TcNoZEQSKQsbpJzmrFZLmnaD0Qe4rqPtOukRGE3wnvlsRtM04qWeb15KiRQCLrtGPXflmRKlVa6vEqYsQWtc13Fxdk6BJu7u8uz4RIaV9nbp/EZeX/D42IoCvBP+mGsFedtsmiy4IHpW1lpsWeC6juQ8i/UK6yNjX7NqHMv3n/L4r97i1S99kZc+9xqfff3nePL0lPfffsjR0W28C7z33vs8eHCP1eoZF7MrClsxmgZW61bg+WrKbLXm7bfeQmvpT0QX6NYtV6s5rtlwtL/POnWcPD3B+cioqoleuGHHx8csrhZ88ee+kMELMRNarxtOT05ZLBaD+EaMkZhkkM+3kf/r//4j/tW//hNGY+HCrVcrSmX427/yN2kWC2Jw7E4nXM6v5NYbIRIGErYwGC014d7eHlpZAYqMUGec82w2jci1poRRdniWA3L6aTAzSmwNMb3v6IcblBIrOnHxjUQfhoKdEDG2d/aNpCCnkjGK0DkmByNxsA0BYiAFT0iJxTJw+uyUl+7cpmtbQox0rpMBoOBZbzYDH61vtDWbJavl8jn/+utOUZOdKZPpOHPRIDeCqLTFRjh+9Jiz4hTfefb3dtFBTsxEFHQmCBdutZQOtzHSX+hPrj6fbpqGorC00QtJdFIxX64IrqH2sGMrXBN4941/y9vf/wFnDx9z8PID1t6jHEx2dnj0+ANWiwt8aDg6PGJnZ4/xeAfvI851LJbPePT+Bzx59JjPvfZZ9qZ7fPDkPQ7397jx6mtYo6nLgjd/+Fcs5ktCdmJOMWZOmObo8IjpdMqbb75J9F5kkVDDaHS8tumkhIxk9KRTL1OaCYgBMImD/R3OnoLvoqwHJbYiclvkXg5zRKZgMV+glcG5QK0tPviMxolElso9A/k+WTd1LVplHH/8On0hggX6xYfQ2FXuovfHohL40HdOxNuyB6TOnX6VpCubQGqNtsVqk2c4xHlXqhoh911cnGPy0Ru8F8WYuiY1Defn5zgnMqIhyNTifL6AGPDXj+8kYm4+BIzVVLXY6pHnU6yyFNoyMgXObehyH2lnMt0GsIqkJCdfTJG6KikKebjdakG3caxXa9arJTFKc64sLWVRMLYluiogFPi1JxaGK9+w2DRQVxhKvv1nf077nTf4O7/5W2z0gqrQ7E0qzk4+5KV7r3Dn5l0++OBDvvvtv2S1mrG3J05f927f5UY54c/+xR9zuHODUVXxxZdfY3p0wKJZEoOn9YHOe5wLVG2H1hprBHg5Pz/n7FSkpzSK5P2QPfSBcv1PzF0vBYO/dsoDL8YYjg5v8HaKqBhIIVBVFYGItobDoyNeefCA89NT3n/4kPW6EXeBPFm67qSPI6ekp66rQRBDKwMmDcNkdVV+4hp9QYJFGkLaKLQ2UlDHmO3P8m1MUbxGtiTifGXbvF5NhIj3ckPrqqZt2qzwIpBmJHF+foExlsl0Qtd12a5auEzz2SVd2wg8TaJt1rTNGpVSFpnWjEdjbKHxMRKCE5QqQ6daQ1AKZaQOGlUFyyQTZVpBVRS5fooCXKSIJlHVJa0G5x1N27Fab2jXwi8L3slwUz5VjVaMigpVFxRVRTKaplDMXUcYWZwKuM2crumY1BO+/af/ho3rePDaXT7z+l1u7Y5ZXlzyv7/5z7h1dIOf/8xrTMcVdWm4OHvM7YMDvvP+CeZqTZqVvHv5Nkd3DvnK3ZtC/Nys6JoWnQx1VVLXI1JMFMbIKZPUMOgVUvbqzO9ZayO0peCHYCEhaCW9TEfKMzC93WGkdS0+BVrvwFp08kBisZhzdnbG22+Lp0/TCMxurAHnSEaE1LXW4LfKMaJ53K8ZRVUWQ7r7cdcLEiyQVMRkEYEYNYOnXZLy34WAdh0hSd0ifvR5d1C9EWsesQqJ9XozCBIQyZR3+ZnHT5+RFBhtqWpRbJ/N5nz4wQdslktC1xFdJ9mUd5C8KPsHhzEFvutIPmBLkzlGiujymK42eONpXUeRApv1DILDJENRaJL3LDcNRaGFfq8SZW2JBDarK2bzFZeXC7rOE1GDmJxOkIIEfcjITtlpkm8Y7++jdybsjUcsfIvLqWzoWrQOdJ005rrLM+qZJT5ruXfzJr/4mQNqm0hnfwWhQ5HYi55w+SFqtqJYzlFdhcLjA4wmY3AJqxJFMkyLMaowVKYkqkh0Hq1kGIskaWPXdWgrKa3bNIIRppTxFtn5DDp72Odh1Xy6qLwZXc1nzDZLyqJk5Rp8UhTWslzIyMH8akbnpG8SQsxi6YqQBMDQxqBsQWoagkxuiH+PkunKoiioRtVQL3/c9WIES0qikI8mRSU8sRDoumYrgQOZH/X8EZ6I9KpzPX2lFyCoqprVYonXPhukJpKPHD95KlwgZHdbLBa89dZbvPvuu2w2DdDP00vghQBGWVQh0LbrHEEFfNDYsqAwBSKvpLLGspO+SALnPN4FNFBpOD19StdtuH1HxLvL0rJer3n27JT5cs58tsIH8JmrpFImawYBNrQCgs6vMebu9YbQdpJWGkXUCmKisBZTV3gSoVlx0I14zTXsxIbi/G3sTDGqSwqjRZ9Ya6KtIU4o1kvcesG8rVkWG64Wl3z4+BGz5SWHuweiMdy2hCZhVLbMDhHftLQb6az3tCStRUshRfH7yyd07QAAIABJREFUTDEO4E0MYZj/SUl8dYRy1GOkGmMKjDbEvm5Fk5JiPJoQgxdZpNWa0XiUNZMdIUjPSyuDGLAaMbtSmYuIoGAuz+IoxeCY/HHXixEsgI6I5bLWhOxqBeTCLOUTp4f21ECmFEpwr57eq7YLVFjXtQjXRY9RhXTADTx59IizZ6e4XNg/efqU9x6+x9n5OV3XDb8zpUg9qqiriq7tKIuSwliisfloV0x2JhglQgsqp41StHti0gQXMjzseXb6FKUSL7/yAJUC0SUulzOW6yWr1YL1ep1hbY13cZhjRxtZYFmoQrOVbe1lbK2S3pSuSsa70772JXaRYCNKBarQMOpmjHULagTJ0LaJUGgKxHvS0uA9rBZLlqsG41ou1jP+6vtvMr41xRaG3dGU+dWM9WqJNQVu02SFHYXyEXxg4xy91YPr5LXqKCdkRKFyD4SY8NFnpRo9oGQoEQ4MMWFtgULj2g6jDDpC8olRNWU+v2Q2X+CDH8ADhcoAgIAjKusLaCtC8z4mNFAU5YB6SqviUzCDD6ByGuajk1mH6IZjul+8Wwmg3u4sXiu4dZ6Y00hMKW7evMWjxx8KVZ8o05cazp+dcnF2wtHNQ9rWcXz8iJPTJ0IjSY7ONaLAnqCqC+pRgVWKaVYt0WqLzYshqaA0vduxSpHkZedsNw1KJUJ0GJu4d+8u43EFRFbrJU3T0G42BB/EUgLo+2W6R6mvQZxAfn9iZOR9RGuHUZKb4zxFUVHXFfdeuUc3W3G+WuOT5P0heVoTKZPHINQQ7wMhtmhraZKmS56rpmHpHDWeerfi53/py/z27/42zWbD/OwS13VURSG7vsoIU4xilJvARgghZQ2xSEhhiyamj2YHfYtgO66RSKLaU1qcC3m0wcrz7SdLoyYG8WBRSlOVNb6RU6W3TCTXKzGfZkrLvFCltoBD13UovU0LP+56QYIlofKiU0omJLVVBMdz6EkvCif3oFd87HshQeQ5lUACTdPwhc9/me9858+JKuaGpUKnyGqx4OTpI4wOnF9ecHn1DOc2WdGwIYSWhNQpvvEE32KtzHwPMhNJgs9ozchM0NZI1z6JiWzyicePn+LblqrUFJXi/p17jEYjSWGcZ7NesVqt6JyjV39RSgCLQULpI88vpe2C+qiQXVkUaK+4PDvnpXt3Odg/4P7nvsSfff/7PH2yhmAoqElB6j6VQRWCWO4lr4nGUowq0JFWrZkcgLMtITmBWlOi2WxYLOYU1mxp7TJcJB1xMgoWEhAYl5WkiklSyf4h9j0zIcumAd7tgyUpnX++om06muWamDQpBLSq0LrAmpKiKOXUNSJCYW2BNhpjy+zUrLK0LNjCyNjGNe21Pm0fjT4FWsdaKXRKBNfloixL98R+YUpFlrJFHGnbwBRheTUs4hRlp2o2m4xoKaQfqYgpYFSka1vefPO7nF+eEki07QarFe2mJbkWFTwqOHzb0nVORMaTI/nepk4gaBXFXqFIHhWi6DKHgHGJs5MzbNuwNx6hdWIyGVGRiG2DD5H5Yslms6HdtHgk7ehPk4QYx4bUa+8KPy5m8Y2UsmdGugaCxARRpKJCcBw/ecTXv/41fu/3fo9v/vu/yz/9p3+I++5fkJzFRo0rFAmDzRw5hSXEiHaAiUz3R6Sdki/+rS+xeOvPiMkRnCe4wHIjYwaiJR1Q0WOUQhslpM8YUDFhBJUg+Jj7ZxJMXZvHinNRLyWWvL+eLwbIiZUExXQuiOMYQiXCiC50IBGTxuoSmwzJC/LYdQ4dIhp9baRD5KBk1EOyQJSVlC/9ZN+3FyJYAEZ1zboRyJZefSUTHqUo01LoKrmJ26ag7Kx6AB4VKSoIid2dKaUt2XTdQN8gifzrYrHkcjZjPB1jjaGyJc/OT1gu5xnFcShtsEllbaxWFgCKyXjEqm0xSmFDxDUtgxNAhkz3rSLtVMJtQ+EXS2abFckYXFKsmoaua4nRk7QsfpUkl44JVK5XUk5N+n/7/UOu7cnT95MCCaUTbRt59+0f8pd/8W2+9LWf5x/+w7/Pwz/5LLO3/i2ENSl6QkigLSZJ2zCiCShiF0mFxlUVTXRoCmIMLOdL0QbQYmCavKio2P61hSjzK9GhYt9DkZcZsqtwn+n0iFfKEHGKwpFL/dvKdV6yoknQm/BGQAWHtn1gJoJPgqCqAh8N2lbgOqpytB3VUDLH37mADwIKtc4PtabRhtZ9CoTBJZWIWGtwMevvagNF1vxK0rE12TpN1FlETshkixlByQAkR+3alofvPsxiBUJr7BUYU4Lzi0smuxOePn1CDELnWK9X+LYjdI7YOUhOikTnMV1AR5mRsEZRuEZ209RD1nIlIGqF1rlQJUBSoipvFV10NI3LhXzE5FxfZYE+FDmd2z441actKUFIH6OYKQtT0lWFUpH33/+QP/3un3O2PuOrX/l5vvB3f43VZ28z/963cadP2CwXxBCpCitcO2TozUfpeBtjmS3mPHz/fVrv2DRQ1hUPHtxB9aCGVkOq3BfYzns5EfrXrEQNP6Wtx+OWSrTl2cnpH4c6pm9KHh8/xRjDKy+/wumzUybFDrEHFGJiOhrxLEaCNpSTCcoWhCV0nWcymVDVYxaLBQqTa59C0uzgpRlcViRt2LSfggK/1+vVxhGil2NYC/cnJi2axUahjRylRqdc4PmctySUFdjWmIoQpQCfza4oCkvcrNDRyERc3tmOj0946e5t2tVauEOdpBUqJUySYj32funByzhx8KAiq1VHUvKwpU5SQw3VeyEaJFWL0QNKcH8lSIzzHSlIkWoUqJhPhl4UMNu8oRgSTLIhrUSEID58tKzJcz8SZoaryxnvvPMOcbNkfX7Ge48/w9e/+guUd1+lm88I6xXONxTJYW0gCUVSCJYKyrrEFAUPXnmZr3zlK/y93/0PwWqePH4315ZqCBJgC+uTa5AodVivfg9KZllizCdLDvprJ+X1IEupHwZsMNYyGo84vHHIYr1itpzx+IMP2d3bk8la74ndhvX8krqsct8ITPLoCDo6aQpXlbxmLWKEIUScvPjn9RR+zPVCBEsvU2Os4v79W7SdCFAvFiuUKtlsOtE/NgFjFft7O7z+2qu4tsVqaJvNMJZ8eHSH73zne3QusWlWGCtq+jEFko9YJePFl7M53nnadYNKURiqTkZgY0xEH3LnXMCBkIJMb6dE9NtZb4El86pFURRWLCSGtCTm/oGgdD6r5AcfqEY1yTts/rwLieAC3nUkpVBZWinj0VKh9vbT/a+UG3j9H1QW22rWHR++9R62awnR8fD4mNnpM1453GEyOWC1WKA3K1RwmRJSSCMUkWKqapknUmarAKkQipBChtFS0hjV66SJ6mQ+4LNHKAPtSGdelnOSKgqdKbci+1OIDA4oNYxDyM8NLJdLfvCD77NupdNeVdUgnD6qKvCBuiyx1jLZmQBgM4VFWRlJXzXihtwFUFqjCpPpVX1L9OOvFyJYeoq8sZp/9I/+czq3Zja/5M03f8Dl5Zq3337Il3/+S5gislpdcv/+S/yn/+Dv8/Cdt5hfXXB0eEPy/6R4/4NTHj9+zMnpHO87bGHoBS+UzjbPURqR63UjyiN5ApFru6IPPiNe0jNR24pQaqWEIHik4WanBNEFCBEf+2BhSCtCSHRd36TUFNqycS3jwlJVFavGs4kyq6I111RkMqwZ01DXw1Avy2vukaZ8iYQqtKuWh8fHdGODbSPrswue/txLvHrrPocHD7BoFssLoofCKnSe2WnahrI6YNPKyG1wOTXTiq5rMn9uRVGMht06JaHSh1wHxPyaesBu6NgbYVb4TFnRSpqMKSUhkLI9WWR1yGayWq2YTndIRhCv6XRKiAIrl9UEVU5JbaIhYcZjSbMybDy5eZdNs8FEAWnGpaVpNnjfDRtf130K6C6JiI8Otwn8s3/+zzm8ecCjRx8ymzU0jaPtOo6PT1FasV5fAYk33/wuj598wOnJsdg7K40pSs7PFvgkjN6ua/L4r8o7cpIhMK1YrdciqBAi0adMnzEQnQRF7ha7PD+vIwPh0aeA0RqjZB+W0WYBG0JIJJ1w3mWCoIxJp5iILhCdJ3pPVdUQEjYpdsc1xhpc26GjjEInpTHJDGnNgHiR072ccgliK+8r9kdNDBCyDoGSsenZxZwiKhZXM56cH3Pxcws+d/cWt4sRBwe3WK7mVCSqZGi0RkUl8kxdSxGkseideDfGAE3jBJwgw95cg7H7GgSV07GMcvnrTOr8pRGiupZ2eb8NkowQds6hjUC+XQyYsma3KimNxnnP7t4RVRGgnnL/b/4HLBvHOFzQFZYuWJRbY+jomiVd5ynLEfvjgmdvv8vi6ox1EQgGpv5T0MH3PrBqPCF6/uW//FOK0hKix0WhytdlzdnFjBgizWbN2bMZb/3wv8dYqQu6TqYJO+dQykK0xKgpbE1RjfP8/TZVSTHiukDbdtgk9PCQRS/EyzJJyZBUFtHo57QjekCsIlGB7k8Xff0YIDc4s+kngNJErQdhucJodIqMCsON6YjVphGUJyVImpjk873YQD9kNoAG5BEC+AhChnDleo1nQHWRy5NLtFaMK0tYtLzl38Q2r7D3+qtsLIzHE5arOTElNipRlIYNnifHp8yenbBcLLmaXVGNRzx4cF/qRCX9LRlbuDYU9xFJoV6KatsTkve0FW7fzg1dv7SCuqolbc1mqiGImo3vNat9x298/SuMxlP+8tExe6+/zmajsE++x6OzC/x0wmR/yuuvHFFoz/HTEy6vFpjoeP3+K5xbw+PNBeMbe4yT4du88bHr9IUIll6L12hZ6CoWJGXRtbg5KRQ+iVUzumS5bJgvmlw8p2zfHDJe7wi+wxhLVSv2ylGm8suKEssFKbwXswV7kzr3GCM+Zaas3zIG+s+lEARZgwE1kga+QumEqPtIvyRlGz5prkkuLN+b8D4XvQl8s+LGdExJZBN8bg5GOZ3QJKOwVhOS2MYaBdHFQUnF2hKSJvk8xHwtb+uLY20rjCmYXS2ZTmtiaUgpsFsWFDGwXi1pXMP5yRNevn+HjV/Tac26hZaSsrTcunOb1z/zWb7xG9+kGo94+N57OO+2AXmtcTxQTvJAFfQN5K3vfW6sZ4AAIboOKZoZmpMpQVXJ1KOwlfs0z+GnU1qlKV3LK7FhFCyXFm7ViqsWlDYUZcl73uHWHU8ftawWZ1xdXDCfr6Bt2FeGgsCN3T1AY3+CbsULESwoSFpSsVs3b3H27FzUUZRlve6AxGIp4m1GWUgmC93JWKmPAa1KWWApEpNHY8nMiudTmJzjxwjLxYrdUZ0F2obkX5qkiM6wyg9IxZxL50pFa41Oeqh1ZGGI1UVM8pH8uKwmrxQRxN4vCZOA0HK4c4DJyi0+BnwMMvSkIrYyggj6rWsxCrq2IUdxTgGf35V7AULoUzVJEdfrNePaMK5H3LxxA50Sx0+PWS0uubw4RVWGX/jcXcKmIa1WqOToujWTevRc6Svjz37LzWML/16vNa6/pr7XsWUc50evFH07sA+w3lFAG7Ec8T4IauXkHrXRsVMU6Ag7LjI6fcZ+sWH/8Snzxb/mjQ8vKeKMufJ8GAr2jg4xaUz0Dtc0lICZjFhvGm7sTjAmiqxvBgU+7nohgqXH4tGK0/Mz0Ip6XBHJO1SGJo2xebTYZ5aLFJGoPuXIxLkMAfZ6XTbbEPSBolGkpFkuVrj9Pcnx01bpQ8T5coGeehQqpwp52UitnaTwJ0n6NHSC07AAQBRrVCYGxpiH0NqO3cqyO7I0HhrviRpCtiM3aKwRqkbIDUtJugyFKQR6jRFtIjoFQac+sjgFxk4UhaKuC9pWPFG6VvHBY7i1v4ONHrxAs3v7++jRmIPpDr/+c7/In//1E5pWuvbOdXRdSzWuJaXSDEEqvRH1I8ECDKdLz8ManjeZaRy3YfgjPpRJVHL6/lkfNAmNiREdpUp7eHHJblzg1ks2tsDFyEZ5ltZz5/ZtDvb3OD075uriDLduKZQVLTMCpTeETSsGUZ8GNEyhUaECBdrWlHVFWVdE31KNKx48uMdiPuPs7BnRBYJPtI2DaAQf1xl5UUJvkfpR0hDvPGVR0nVi+axywayVxrWe4PtTI6KjFug4xG1qEdOWz5Rz7ZhkIEknqVl0lEakwkCSVFCcpPLD79EhEGJfVnXZ2x9TF5p1UHigi1lKNEPEyRl0qTPhMd+rpDGmovVNVtsEqyEYhXfbtKdnKCsVCKmhGlk6h4j5bTztjSmNjxTRo5zjl778eabjEe8/OuZzr7/GOz98m9VVx6SqmbULOifyrOMYsq23PLmU8qmBzmMNP5rL7O/vc54Z3TFD6b0uY4oSZEUhYnm9KGE/pFUU4qJwFp/hnJcRjhCZHZ+wuzfltb/xVT6IjtX5BTs3DO9fPuLDdYVNnsOXjphOK05PPmS+mLNZrXHrjsXaoWOHN5Gz45bUtRTWsFqtP3GdvhDBMhSAKFSSTrkhYYsq61WJ4HdRVEQVmYxLzt0FPZO4J/NJo07lnykf+hDRuiSGdabxJ1LyJCV9mBA9KnlS8HgtNUpAine0Eq+XaykcfSKWP+5rF53RIJUkGGKSRCyqSNJibrRqNgTlsMphMdRmj6RqtGlQKaBCoFKWqIQio5SRkWmViDoQMkqmkhbnZh9IMTdBjVjWxZw2WqXBBSl0ghKZJVvRtpGI4p13nrA43HD39gEvHd5kvlkzX1zQeo9LinceHrN2Jaqo6KLjvScnPD49Zn//AKUUy9WKmIT+o7UwwLe1izxXMXeKvPbaa4xGI955590hBQu+Z4xLSluWJXfu3OHhw4fbehG4desWv//7v88f/MEf8OTxMcHLs/Cuo1nOefLBY3anO6xc4oP1nGQse/twcHiL8e4Oi+YKXTh2D2rGE0NqA91yw3x2iXIOFRQhe2MurmafuE5fiGCRS+5wCJ62lTJ6NBqhtRns1HZ2pnStY72QHeBHUZRtV1iOdJ3ZqFunr151P6SUpYYcmtydj4rkyZ3dTNkIgT4oZGQmIznXXncudfJrIQe9EdsMpXE+slytcDFhSkuMjqObR1hjxUTWN3ShI6qELg2jQmqxUmvp32tN8FnUAWmmWa1JSk4hbQyFVlglE6V9GhhJuAA6WqmTlMIoxe50l6uLK46fXYCCurRMxiUXp2fsHRzw8INjynqHZ1cLFusrdg93uXf/Pl/72te4f/8+f/zHfyLzH8FjrahY9qdKjJ6UAinpoaZ59913uX379kCVl2ezfVa9ZO/jx4+fo870ip7f+ta3eO+994ZnLqe0UKGuLq6IPuINqHrEweEhN27d4t2HD7l6OgdtsiqPUKjKqsKv1tSjipCE7hLJ05SfhjTs+nVdJufo6IibN484PDzk4UPFs7NTgou4NnAtLQZ6ZhSQ1NAxl3TEC2qUby4pDrt+23V0zmGVqD0mpfIpJvQWjQhXS7qRZRXS1mai73MAOZi2HWgR5EooDKvlis4FAgZl5HM3bx5Rug2rzZyuWZOCxyol6UhVCcoWkozLBrEzD0FmWDBQaE1RVzJJaiT9C05GoL0wMYWprLSYACkgJFJw7O8copLh5NkpT08vCN6zXm+4deMGb3z3bepxSaSiaTVFVbLZtOwEhzZyAuzu7mCMwbmOqqzwPo9gpzikoIotbH5xccHp6Wmeu49I8a6GFKwPousmRzGKEst6veLtt99iuVwMwScETYXSFlOVNMHhkGnWamdK0orVekNScHnxjKYVnYU7N2/xO//e7/A//+P/ieVyRdt1BC8aZkL7/xQFS0oiEL23t4f3nrIs+eY3v5l3HI/zHavlGqvF6qFthRajMyvEWvlADhzJebuuxRYF/ey3gmyJoMRbvm3ByCJMSpqXIReOIebATVEafjEX2TrmDn7qmVsD56znQMeUwCBolTYZuVKywxsZsx1ZxWQ6Yjyu6aLiatkIDUNtTXXO5yuch9IWlEa0rkwWHc8K6ZIKRhiVRe5ou+f04BUqz68E7t29TVUadvamXM6viDHy7HIh9YJPNMGiQ8mm6VivI6NJYLw3IsWAcyL6pxS5261ISQ1emsKU8JLmJp2bqQw0H9ULR+S7lHpn1pzCXtfxUkomTkP0zOZXdK4lpp5rJxvhaLLD3Qev4JPj0fkpKM1y0/D2ew+5vLwEpLaNPjIeV3zu1df54fd/wLPTU5ZNm39HZGcyZjyqf2y9df16MYIl00W01kwm4sFSliVnZ2d861vfYjQSvV1rxZA1JY+xCuX6Bp2cFJ3rUJhBQURhSIgWmTFKhKH7nDqJ3tR6vYbKyEPQGp2lXHv5pK2/S+6wpERPCBYbyF6RZEvXilG4ZCiFjhprNbYwBBRFqUmhpW3XJFNkvWTQRlNphQr9e5LOts4Ox8IVEyK9RRA1IU1muo3WlEWFbjtx3MrFgQoy5qsUGK0whcYnJ8oz44LFYo2xhtlyjfMBq2s8IlUbYq+RpjBWS/EdxbPGuU5YCYGhcQp5viilnIohfaDEtUDgI0GRg2dIY/PprI0wE7zPnjzX4OWQwGhaFzi7mmFrRVGWWFNydXE1OLzJCWdEad9Y/vKNv6DZtDJynBQuS+OOR2OmkxHHx58gGsYLEizXIcPRSPR9N80GEpydn0ufJJ8MMQQxufEd1iqxDhi4RNLxlgeWma5KxOPkqPe5wI+Z7CjmOlbXAkdrWdh9btUXqEkxMGp1koXZX0nlU+UasbHnoqEUKSisMRRFkiJey3HfuYaUxAg29LR8lYg6888G6DkRVS8JlQMgI+094q6kw0dRltKbyMwDEbjTouapQVuN8x1lZYixZTquaDZrisJirCUmcDGRXGC9adC6EH+T5ZzZX/81lxdXvP3221Rl31UX5oOSY3Z4TX1DUVRC+4977GXreCDu1CK927/bfnfXWd1nNBpR1zXeZ80xuSMkLElpmk5UadrOUZZjTFGwOxUfHW0EaickUusHk6YYA2VZoZyiLgtxFsui8p90/TTC4A8Qi7zbeTn8dyml//Zn6StZFOUw4HV8ekLv1htjRGmVC31pvgnOHmQ4KzNY8+vEGEtZlNhCDFYFqizyYg7E1PsOgqZHqFpGkwqSwkRFdJ4UIsnLtF9S5Nl6zfUOuepblLkH8FyPIWUqR0JGa3XEGkUVNa2KeBLKJ4oAXgnNJkVE0CEqkjJyq5MjpTxnkk9QpcCpQKHMIO9kMKAMSUcqU+Ccw+caKxlD0pqisGidUCHRLle4znPj8BbLxYoYQamCEGFUJmazBSrAqLDU1nDnpfuYuuaVV17h81/4PD/863cwpiKlgFJ+YOzKINX1J9vvIv0Ig89wiKZP4SSYtmo1ffNS5nvg4nKGMUt8iMQsAB81eBVpg2O5atAbRRc96/YZk+zPU6oSheLy8grvHaUpiM6zWi9E8yz3qja+4yIFZleGwlafGAs/zcnigf8qpfQdpdQO8G2l1L8A/jN+Rr6Szjm8cyTzfENLmn0iavfyyy9zcX7OxcUZwUkh2LbdcCIJ8pXoug7vVTY/ioOtQD8EprLrl3wsYt/0cGbu2TzXmIRrzb6UH2rfx0dOD8WgvjKQG9kqZPbUDnkdMkJdlobdaUXUHT09ZlpMhqYbKpHUmBjXqE0gaI1OCpIW1UtlIO/MCk1Q4JOkWtGIHoDuX4sC7xyjSub/tVaMxxNsLtibTYvW8jXNJuFcpLIlZVlRVSPqakLQkjLV1QilFNYWWFs896y2l3ruY9noehu6XpEnj0ajh5NJAIIgAIkSAECG5Lb9GxEzkfvcti2z2UzeY2mYLUUDebPZcHh4yI0bN5jPhFNotMY1rYxDQ1b26dkCaQAaPun6aVT0n5Jt7lJKC6XU9xHru5+Zr2TK8jXeuWuLvy9eI+dnZyzmc8bjsehHqa0yR/91KXfJlTLcvHmLV197Gec6Li9mPDs7p23VsOspVEavZCeTuQuZY7GZft+zZlWfW2yHXj96f4aPB0XFtGUAy0mzdVS2eSGUtWW6U2Gzi5dCY3QlwIEScLpVBct1xNMStUanApLBJ1kwpHzqZbChI2AUJKOJych4spLivigs4/GY1WqGQTMeVXStkxTRWoLvcM4Tk8GaSlA5K3poMSaigvV6jXPig9I0Lc456vrHSZ7KdtHfri3XK10bO+hnWVIOePlY5w2FXMN+5jOfQWvNG2+8IW0ApTPjIqKytFLfbLZaiKZVWTGfz7PGgdh59+lq6u8bCC1KaYpSnK+9cx+3RIF/x5pFKfUq8FXg3/D/0Vfyuqek0YYUIjduHJASXF1dboMGsQmIQYQm+qZgL480XJlmEpWibRrOn53Rdg2z2Zym2WDMtqjY5s/S1wneD9rH3vfSsXoYcaVPuSCnYpJMmJxecC0F6/dUNayV/L1KYbSV1CUVPDo55e5exatHOwJf+kjXrPHOs7e3R0Lz5HzJbLZis3EUdcW4FK0vl+QU8WQlerI6Z9rO16DEN2Y0HrFarrC2JnjNdHLA+cUp45FhsZgTfcJqK4HixchWWY3NPDRBFB0UfYc7B08UXxO5n1uZKjmRQRArtvcvxVzsh+cpLflzfV0jEL/cd2PL/Pu3kHJK6Zr6zbbeVQkKbXCZbRFDYO0c0Um/rCxLebbD09v+PK7ds0+6fupgUUpNgf8V+C9TSvPrbzilf3dfyXTNU7IqqqSVkrl7pHl0ffAndy2k32B7/tcWbtymPsI1urq6Yja7HFAprU32nOx/IkMDyvuA8x6MGSpmrUVuh2u3ViYe49BLUSnL6WRquqj7M/zsPlBi7nnoJIxagiIkxaJpOb5acnt3Suo8m6aV/NyWmFpzMVvy+DKy8hVdSnSblrGdUJiCLjOPY8xz93nHjEHQHY3op41HY+pqTPKahKJpAvWo5ObNBxQ6UdlA6FZEhLSmleBs050JB3tTamDVbHj06EMc8Gu//qvMZvNsGxGzKWr8MenLRzheXD+Bf9yK3Ka5wwmUJN09OzuTRd53Z8xoAAAgAElEQVRvSAP1KJu2ZgPcwogzXLxmARKd0J9MTre34olp0Fq2tsi0/63dycddP1WwKKUKJFD+x5TS/5b/+2fqK6m1pmmyXKuR+ROtNXt7exRFwcXFRX4tuQGYvSSl/SH/9kJpOnvixeApaynapLWihl0Q5J57LyJzJqdbUSmRI01bOj79CdO3BfI5Lkf5NqhRvZRR/uQQ0BlO9tJnURiiLnhycsErBwco39G2nuUmYIrI/NEpx2czZm4HpwuCKgneM1stGVlPUJLODHJQSICG4IgxUo+n7NZjqtGEq6uFFNJKo7VFpYLoNcFEppM9iJr5fJZJo7LD13XNyy/fxy+XbE5a7j14mWIiqNTJyQnz+ULgZCPzKFzrkXz02u7c/ehxvyDTtb+HOzjA9CkljBJe2e7uLicnJ/QPoH9++/v71FVNXVeMxjXJJJ4+fYqLsgFq0xKSomvEewZ9bXNV29chL30rovFx10+DhingfwC+n1L6b6596mfmK5lIdMFjY2A8mrLpJB+ejEaMRiN6YuD1B5LSdTHw7Ry8qIsEyqIUfSgXB6US6RjHgaQXo3QunEtoE9A6or1CWZW1vOThCeCVGyIRVKadELfx0x/jUeVULSlIBpRGaWHIKi1ImDYGHRPdxrPpoA4JvwmMbclkb0yL5XzRUQYlzThjwdSsXIdPGwpdiToj8mt8dAQia9exaR2VsqAqmtWMELMIRe7SqGgoVIEqEkZrDvcnrOYrlEq40KD1hOViiW8cKmpUEK6b1mZQpLm6ukApgbqDQuqHvACjDyQ80ivSeYYlF/PKo/T2OW7pJX3QIQvaS9/MFgpU5OTklOHRZ9w8krjzyl3u33sZawzNesXLr9zn0aNH9A7Ul5eXPH36lLZtaVtZU72b2nUppqIoshzuJ8fCT3Oy/BrwD4A3lVJ/kf/vv+Zn6SuZsXnpyrdZ4jOyWi1ZLOZsmxh9QSgrcyuh+vy7DMGzdi4LjAt2ft3ebouCCPGw6zqKskQhaItJZvjaIViu7YjpuY/zRynSe4sErUAZTISSyGt3b3G4P+adt99jGQJeaZRV3D68yZe/+AXeefMNSEoEI5KmHo25c7tGzz1uthDSobj44GNERU/SKbs7G7QqWG42rNYJU06JqaLZJApdUJQ1pbWicaY0NkGRZF4H3zGqNAe7Y04vO0TPXrPZNLzxxl/y6ksv9XadeXMJA1SfUsIYTXCieyZj1mroSWXtG2xZojXEuDWp+ugVn9sE01ArhhCYzWYs5ls3aRFRlIbt6ekps9mcwhhWiwXfffMvBnUdpRQHBwd84QtfoG3FumM2mzGfi0XFdV5hjFGAi59w/TRo2B9fWykfvX5GvpLSdHS+Y7VeSEmcb6w221SmR7FIollbFMVAdFRsDZFQiaT7nUsNx7r8nB4SG8azxD8kSh6rlMn0+j5/zsVnZhrLDpjTMIXAueR0o9+tFCiVMCmwWxj+o2/+bX7h86/y9OSCf/XGG3z7rR/Qdhvu3bnJraMDzvf32GwuUMYyXzVcPD3jYt6xpmDVeoKSkWKb67Vk5D0qJXl96wLLVaCsDqjqEXU9pjIVqQu0scNGR201u6OSvVHNuCw4urHPzsRibWDjX+aP/p/v8cHpnDasCd5DYdDaklKD8x2hFXqQUoqdnR2WS9Fn1iIGMCBY/Z8Y2FZufcO4xwvTR1KwtN10rmcQMUbWq/Xwe1NGKVESDLPZnLJsRHeNxHq9ygxsmV+6uroafl5ViYSs954iE1V7DuJms/nZQMf/v1x5cQl6sp1liCEMp0ifZhklt1xrjVHSlc7PS4p+Db3+MSnvvBnBkl0HEUnAkY80vHeQZHy5D5Bt1rUt6IFhlGBQTiXPyMQeZICxjlQGdkYVv/ErX+XVoz3a82PcfMavfOEzfOPXv873vv89rk6PCX7DS/fucjHvuFxuOD6/5PxqTogFxW7F1JQsNw3JB4ythwNWZT9F7yOdS4yqHXarMVppvHOsri4oMRjTcPvOHndu7DItE4d7Y+69dIuXbx4xqQtCcDy5WPHozk3aTvPBsxUhJKrJmKoecbG65PjkmGhM3qAs050dirNL2rZDKzNoFXg82oh6vUjcbseOZbH3mgLbgv96XnB9cKxXthdPTf8c/Nz/DJcVJXUS6/e+qdnP6/fB4ZwTcIVtS6Kn0PRuBP3v/KTrxQgW+vefhj89X2orYLdFWDRq8HzsocSYdUKVzrhYLiR0kqnIGBkCL6V4PYESMYp8cn1cqnD9GgQh88LtA5X8Wn7rb32N3/7Vr9Mu19y7eZO4mWES3Ly5QzXawZqagy98ifVrD7icX3B6ccbVasnjs0tcgnuvvMZ64zmbXbG/f8DhjQOCj7SdZ924vCgS3kPTQaKisoXoKMdI8p6p1owLQ2Esh0Zzd1wwMp6Xb064sacZ6SU2lOhY4jeOqhpx+6U77N26ga0KknN06zlKK27ePqKsp0ynE7Hx6zl2MWJ0ISdJjERE73lnd4/F1TLTWZ4fFd6m0/0N/EkL4yP3PiF7oUZOwHx+FWq7lKVpagcUDbaTo3A9eLeQ909zvRDBopViVFeyM/duXUZhlcnHOwP9ZYtk5BkTQGnVl4jDQxF0StKufuQVeG53y/kVISZC3rG0ut4ug+tl6Pae9rtibm4SSUrqgOm45htf+0WOasvGWzazU9pmjjWaVXSkqyVnT864dfsQbzxPjo95//EZx+cXBBTVeEKXYNU5rC0Y1TWXV1eEACFoQtIEnQidUH5ishT1CJ1Fr8uiwBYlB5MRe6OKaREZl2C6lgevvcTh3g5VYUhKtApWm8j5vOPkfInd3ePewS2U1qzmV1x2a5E+8nICt43AtL2IhMm2eLGXY03ynNarJUqLRcSNwxucnZ2xXq2H5tO2/yJ3+fpS3SpWC/wdfBZIVBki1yqn6AofAkoZ0UxQWmhDKiHAgqYvuMqyHnQDhEYjZMxE3yT9CQ2WfL0QwaKUYlTabZQrhM7Rw47IDRJ/GrMtsHtUReppJF0zbJf6VitZclJJ84wxMsufEd6QEj5BElciUhYAl+xNZVGK7e/rn26fYpACEYNJYINjdX5GaxKLy0uabs66WTGe3KA6uMkPfvguF8cnOOuppiWn53OOr1asnGM63cHUI84XG04v5+xOJlwtl8ybNVCg1YiQDG0r/YPCjKjLKms+R+rphMlkj53xmJ0Sxrplv3Ac7I64e/8OxipsXVLUFSk6FssZyu7x4ckFttxhPBqLjmBwlFWJVwp0gQoai4EIbRewVlFYM/Qz6GWZs8Ss9x1lVUtQZUJkys9wgO3j8+dL/7GUnFmLM0mD2SepQZPSJGUIKc8OhSQSVtYSg0KMpPtUWpR0tk1RACP1aR6h6BuhPzL7/zHXCxMsHxUqkGxqK7qd8omjtdys/vv6b+hT2e3/5eI+bi2cpW8axSw4w7sqU2e891lSKXufgJAgYz/0Fa/1VH70xiqkg74zqrl3V+qBnelLzJdjzq+WfO/7j3h0+YSrywUFG8qJoR4rlos5i/kF1ahm7/CAZ5dLzi5muJjYuEATA0kVKGXxUeRRra0pqgJrNLQdReN5cP8uyhYsFwuU6jja2WenLLh9OOLwYEpZQdNtqFTJ4uKMmKC0ms3G8exsBla846e7e6K1HB1HR0ecX51zfn6BixFlDeOdKdZIoHxSQdyfHKIyo557Vp+8GORPTAliyFT9jKkInXxgXWsls0HWWsxQ50Z88BnZzJOlmWqkVJ4kTb34hyyaoQL4CdcLESywhXa3R/A11KTfjZA6pm+0DvSKa6lZbw0ueOc2ELXWA1EvZb2x60NWzjkRyosyxzJ09Hv1lv4LEwwNliH5k9dd6MSv/vIvsDutuDw9wZhCYNVqj0XzjEdnV2zWa16+U1NPxywWpyQcN28dUI53OZ8tODm/wkVIyrDxAZXNRo0S9nFRVhhTyjyP79gfldy9ucudW/sEo5hpx4PbR7xy+5BJkbB2iTEdMcC4rtmsVoIeGUNVj7i88Kw2jvPmEq8i4/1dlNKMJhP24j5VXVPWJaDEb9NqJpMxRZmpO2rLDXuurtSa3s6hp9v3Bd5Ha4S+khlu71B39lOROQ0PPfgi68MagzV5UhQ10I98iCitRVAkj5THXu0GkQpmWBfqJ05I9tcLESxKZdg3ZRX6fOcUOe3MdQQ9yW64tepa/wRyxzA3BRNghq8VhC2g8rhtzvZyoPWQpR4epjEGnwWzU+IaFJ3o+2d9Zqbye9itS7742gPcekNZ1GzWK1RZ4lLJJlnmbQO2Yf/OActuwdo5TFUwVjXLxnN2taQNkvqQBBa22jAd71KVNa5ztJ1HEdDOMzWJ127e4KW9He7dO0AXlunnX8UqhVURqwMuGtYuZJIqnDw75eWXH+DdmrY1xGRBW5TWtG0n8z3WUFrR7BrVI0bTMeWoZrcw2a0gUJWlnM7wo4tfC3RbFKU4foU43LveePXHXUlllV0lM6gk8dQRtZ0+RZObroyiLMohQH2Wq+39WPpswWIHZM0Yk8XIr/3OH+nof/z1QgQLGb1QKU865H/7XkZS/Zjp8w/lus9HT9wD6ZTnb0RSgMTzGcP1LHkLUxZRRPPSj9n9nnu5+UiXzVIPacFkVHGwU1EVI44fn5FiR7WrWXcN54sFs9WC0XhN1B3LxuFjTUqR1kXOLxZ0TpFUKX2UIM3HUVnx0q07eOeYdZcElWjaJVOr+Ttf/SVevXMDUoNSLYQWt+qwkwlNFBuNddPw+NFTRvUe4/EuTo05X7bc3CuxhaYcVeK4HA0heM7Ozrlz+5bYPJRaVOpz4KbsLGwijMeja0J7P/I4MUYUZ3Z3d5jPF0DzkVL+46/rcPIWXJFNymSCa4+I9s+pazt853JzWdG1YjDVdE42VCVkSzOk2kkWmpJzLf0UKOiLESwosFk4LtO1Q6aF9ztH7GnZYuAxGJ5qa4a5jUgClWcsVHYAYwsPbmHCBMoMmFZKMUv5CKrmvcdrk/suElghpSGAYxA5P6MNkShzOBHpkpsSomIy2aNZX5JcoNk0rHzLrF3S+g0X52tqY+g8dCmx3DjmnccRiDoJjUdlq7zOc3F2Ia7Arfye/XHJb3zlC3z+/iFWJzAVq9mM0pTiyhUD8/WKcjTi6nLFYt6gzC5XpzPOLy74pa98EaVrrIKuadj4hNcFJYH1umWxWLO7M0EFhbUVm3aFiaJYo6OBKMPOMTtLJ3rEEUgGoxOFLUSmyofMEtaiz3YdKEEN7m5Arxo9cP1kJUiq2/e9UtrafBgjFBxj5Fk2vqOsMqqalTq1MVlgJA3pW0qWlBX8h7TwU1OzaENXTOl1vxSye2BgVI6EUUokhY71ao72HhORhaHApChq+LGXM1UDXeKjdY3qezKqBy0zfSLvnv2QUoxxaLb1J/R1SFnlXo7SClKgBHarEb4LeBPzzlqQIri2o4uOYBKegvOLjsO9Gpcis9YxWztaH4T9q4SzplWZRSmszMe7yLiaMK5H/MovvMyXPnsH61b4CMkrJtNdjLL4pPABrC5p1w11Mea1V15DlzWLpccay7gsqM0Iv77k+MkZHktUFTF2JBRnp5fsjHcIPlIUBQ8/eEqgw4xrRvWI20e3cCHQBo84upjMtZKGZIpQWLG8iEG8aIzW2e+mt5i4FjA5SITDLTJHGfyXQLwGMcec9ya2k5XW2uxFuh2rsHkADrV9VpLe5bo3qp5w0TcdfuIyfWGCRU+P0FpQFmNsvqmizLFpWlKIlEVJshXeZb8ULTcjhEgMYcihPxosfaD0CE4IYTBqla/f3ngZUsyQZN55+q/pb6jS8gCDNqgUGIXIF1+6x3/8O7+J9y1tJ3wzFxWta9lsGrr1SnJpqziZLVCFTDfO1g3OIc5gSQEWrQqMsigDQSkW6waiwmjH/t6YW0f7pORZNxtOnl1irOXWzdsoEh98+Jjbt+8SQmK9bohBUZSG9XLJ/dsP2EwqDkaKHRO4ah1t44WyE+U9xyhI4YcfPEIXHpeW1FWJrcf/L3Xv8mNZlp33/dbe+5xzX/HKyIzMyqqsqu6urmITJLtpyhJJ2AYhwxAMGBBsiJAgwNBA/4H/AXvgiUee2ICngieEIdiAIViAbInwkxqIoizZTVPNenTXKzMj43Vf57FfHqx97r2Z1VXVhjXIPoWqioyMuDfinL32Xutb3/o+zKRWzeFBTZ5SzoRRUMPoog87uF6fQd8Pu1RNCht83M1zuaXhYJ2OzWN1DVCF0FE449XrcGZepZPsjtoE7Jgg4/VSp74kGNlAMuWP3xIvr0WwWKuQ5dAPevOKIU7wQ/FPSYXGEanrKQy9PpYcypzJXqNq5Abtm5D7kVG1RiifK7vJWODr52Gks+uDVJnWEaGjfG4HKgA2Z96+f8a//2//HtMcccYQYyDERB8yvVew4J03HvGz2xUpB4acWfaBBAzRFC6ZQWIiZ1t8MkfbPGE+W9AY4XjacL6osKnFMFPEx1imkxldFzCu4vj4nGFQrTGHIxoD6GxL6FuWV8+4NzvDToTJdEHvb4nek0mELMSs0rZ956lINPMp9bBVuwt0lj+lpMLrxTQVKN6SatGXEfpBC+71dssQvBbgrvjRj9oGY3d9vLWUBVtObBXR8KX0lJ9bnI/Pe6yT1JpwP1KRYfd9O2LsQeth99ojSvMN12sRLCkl7m6ud171MRZhg6xZqzWG4jVMSLn4mycd0S2WcNqw2u9K406TX9lpdr2Bg5P3kF2cSx6d8ggM5x0ys+vjjDVQzjSS+Ld++y9wfjLFbzaQVXcs5kznI9vWk0Lm4fkZj8/v8fTqOSEk1tt9rp1Kgpez4L12muvGkMTgRDhpKibZ8+69KT/44AmnE0tot4Su5/EbbxJD5O5uQzNpqEzFerlWpU2TaWYniBhms0Zp9wLPnn3JxfEMb494sUmIbZBkCKgDV0K5br719DkRowUnGOOAojxZpg7Ha0x3RbRxbIzdsX8PFf3hsBemV5nC36VZKSkHMAXlbYnRUeKcD9I0Y4pRlT5X56rCA+tfCo6YUiHbvvyzmsJfG5+5+WVJw3KGJA6MEEnEgse7qDPSyoErWlRkrKswcWCcgkMMuaAk+np5FzTAjl2q9IyRKaBvPAbAONNvxaksUUyquP3KD5opMytkqhR5982HfOfdx8Ss8quxNEEH7xlCZrXt6IZA8IY3zs+4evGMJIWrJIIVSzIKjfoieK7sBUV8Js7R5MT5xHDRJOZxzcyd4mLC1g1DN5BCZOpqiJkUMzdXV8QUMBYezU8RY4gxY6uax289obYtpp7w9GrLTZcZkm4uEZAxdckZsTWDH2j7hI0eS6ZpKk1vZKfxt4evct4JERpxZYRCn8nIBP7KJapLoJSj4ueZCw1lnBsaU7aXHkXePdOmaViuVkXpf8CWhb9zHEv79HxcF4fjyBSQ4dsC5rUIlkQmWX1QJmWqlHGA1VliJEbtjUgGo14nOba4pMTFIJXuzvHl4/ZwaOzwdNldeYSBC+qVIFvt0aQk5GggCUkSxiVsqknWEYlMs+df+85b/Hv/xm+zQMgxkElsWy3G121kOwSW3cC2H2i9ppKTyYRkYDJtVHPZe2KypJDIEY6PTxmGQN975lXN6eKI+xPLxRya2mBwSIKQ9NQMw4AVx7Rp8AF8hnqyYLPZYMWSxbDq1oR1z0k1pZ5PWTw4IuTEhz99yrIVfBZ8HAhpALGkODJwA6ZKRJ9Z3t0RLZja8uDhOaZSfpWTWs/80kNO6ImbJOmwHUV3bXzOKFq3G/ZCU9mxBzMqvRymyZTP756h1Wc4Kr845xgGtcTQWnafUQjsSLeviqHoH/atgG+7Xotg0VWrnXKJHU3SqUkZufe5zGQbIWZLNK74qZeBI0zR9ZVdgIzM0jE4xmL/UAgjH749+vCTK3MrKYNVgp4iL7noVmVqEv/6B9/jr/7uX+J8rmY7WQwhBrquo/dC2ye2ncqxbkNmM3g2PdTNjEhCRFUzM2ohMZtNsbbm0aPHfPThJyzDmspVnJ/d47wRHhwbZhW4esowaGE79AO+C6QIiyNLxLANCTNdUElF5Qzbdcf18hY7cczdBGsy0Xekas7NcsvNbc/a9yARhRgDMmpeinaDZ82cqkrkyiATi2safOjU+qP3L6OO4z0VdoV5KmDLKIs7/iuFWJnGdHcMBsZDqgzU5T3QAuzAm/GkUvkrr6ea7FrH2pk/CJBvbDz+0jQlCzzo2zXVsKWuhIpAPPj7lA05CglLtg3J1oTYqSxO8oWWsi/6xuvVceRvumIM2KS3JJV8V9nElpQcUcBEz2//2gf8/r/5O5xaaIctIWifZr3tCDGy2WjqsukDbchsB9gMsG4HRBwpeIasKE9OSuT0ocOIp93+jGGIzOZHmj71HlfXzKcTiAPPrq548OCUnDODT/QhkZOlW7dsQ2IIlm7Qhddv18ySnrzNZEZVzzDJs3r2grvTN/n8co2rF8yrhiyRJInglcm721RMQaZSRe97bIUKQ9g9H2u87+PEYQqBk+Pjck/jrun787vlZSM8bASX9EgtvstXxbSjqGS+2nnXHp0Gyp6Nbnen1y/Sof+267UJFjDKBA5eexTZq2xpBtLIBzOYrMrw2JpApY2nrA3LQz7RjleU9igZ6HSlcw4/7JGVw0GkkbsyUi9S1jpGcCQ8j45n/N4Pf51jA8kPdF1PTIL3ic5nNpuetgt0Q2IbEu2Q6aLQBgjJkHMRxYtFY1KEmBMSU5FkysxnRyWtidxd3/DW9JzaqMjF1NUEyuASiSFDxtG2icv1luvbLZvWc3R8hJHE2hgms2P6PjIMHZlEFRr+yZ89o00TbDUlx0zvA1H0JB3rBF20BsnabPUpFI6VUJuaxeIIU+SKRui9rmt9HWPK4JbfnQRfeeqiDcixd2LsqNm2x1/E6M8TUnkNY3ZSSIcBY0ypOmLeOTlneKk+gf2A1976QnZr4Ns21dcmWFKyiNTkZMuCKqlQObNTyYM1TYial7oGHbEvzUi+irgcdu/HP2vgvCzQd/h/2OfYIkIsI8K1TfzwO+8yD4ntpiUSGYbEEDJdH/HB0g+WdefZDpE2RNZ9oAuRkACRkrOnHY0nojDqEAZyhOlkTs4JK2q8mr3HxkjoWuZnJ6x7z7pVKkfbeXzQIayrZcuLuy136562D6zaGx6/ccEmBrq2p04t8eyI+fkbXD33fPj0M4JZEDzE6PVsNw7i2KjNBVXSe1I3EzwDXdggqGZYXTc7a7kRPJlMJiTrdi5eilS5l5rDX4Vv8w5hHEuZHXvioLh3zh0ANIejF4qGCWBMLjaImWz2z/dw5v7V3sthS+GbrtckWFD7M1MTosGHMpaqZyrjZGMySq2QqD0Fqka7wgVQHB/s4Y08vBEvNcfG9z24eS8Hixaj1mqqEXPPxBp+8OQt8rZnSSKYjIvQdYF+yGzbSKJiO3Ssu0gXAq339DHifSTkqLSdsgMoaKHuyD4MzCZzxCjKlKISPofeI0mdvLwP3K02uKaimUxY36zp+sikOcJHIUVH01S4WlUWu9bTOMu8rvmtH36fJw/hxXLDP356y/Vg6ZL6yDsyYq2e2CX5lX3LFh1l0Ptmjd3t3KYYS8rBTl/XtapnWrubdQfd4Q+1uw45Zbu0KukYshGjYA+KpsWcdw3lVycbDycxJatztVqv69RsfgURe/V5H55O35aqvRbBoo8lYiRjy6JQPbry4MruIiFjGci2xU8ajExgaDWYRPP/w8498JXjGkDF8lAkpPRkdk2yqE5au6ZW1iO7yUKdhNlsRtttcYPgU2I1eLo+0g6JPkDXBzqETUp0MdDHgE9BLRxiBJOxxhJzwuZEHALttqWxFY04fNeTmoy4GpsEU0GzmNPMTulJyGTCZbeiv7zkaHqEsYYhJUxVMZk5zJDVx6S4b3lvWeUN/+KjP+f/+D8vubtN9N2CaCYIA5VknUAUsGgKk5KQcYhkcrErjynTzGvqqcE2DaRAXSU9iNDNTpJgQpGWNdodN1aoMDptiS1d9VRYwUWkb6xDjCl6aGbXzyKX1PuVhuRh0GjwFUFxVBHTiIq8v8KgBV6etc85F7VS+LaR8tciWEC5RASPsU4XOwJSZiIFTC5d94z6CibQbRgd0hoLxVeg4vE63OGstWAOSH0HCEqKyg9TdGaUFVX6RtsPfPzpZzw6njPN4EPkZrkmW1Vh6QL4mBky1JM52yGg82PacLS5NDyBkRW9WW+JMTOZTCFC8glXaSM2k5gt5ixOT+hiJBkh+0T3fKNNQxE6HJd3G7rOM7UzjKm0/4TFmIZhEFarjh9/9BEpRe4dPaS2Dqn1npkSLJSFJqLCEMZon0SsQSxkk6gnDW9/8H1W2w1+aJlOalabjRqjmrGpqLP4gx/Uo4aklBKrQIkKtCtDwZh93yslNb6NcT/BeHgdft2rz1TrJRX/TqKE1rG5GZN/Rd3nZYBh/PDl0Y+ff70ewVKOYAGMddqzEDO2JxUHNwoAIDo+WiUQKwQnSMq4kjiMsPHPq112xf4B2TLnEe9XGDPG8neli50lQU5EHH3K/F8ffsTxb/w665s7MoZV5+lCz5CFIQt9zMr1imBsBUNBgVLWkyJnfGnUbbcdw6hYbxtcFipJWCxpiETrEVPz/OaaYdqAgb731MkQYsYPmTZGvnh6Q0yRi7OKpq7JWccSUs50PnC39VzdZe7de0AyUx3z0X59wVhN2d0FqR2TWU1OZUgK3TyMM/i+JQ2R7WqLrYR6MuGsrkkp0feeu+UKccAQ8UOnOz7KHs9WsJidauirdUxKiWgSIvuRi0OQ5jAwXk3DrLW4kg3EGAlRibUKIKSdn87XMQi+LUjG6/UIFjIpDtqNN4aAMKS0axHvZihLT4UsxG6AeUOoLLmHOPjdSPBhxxb23eNdr8UU0QL2g+Dj7VN6eJnuS4pIjYW5x/DpixuuuwHrI33f0QfYDp6QDQOCT/9nDSgAACAASURBVJkY1JtSO8hGqe2AkeLKLBAGT9f3iBgmlaMyMHUOJxYrgo+eajphWlmCDywuHpBSwLqB6WLG4CPdkBk2nnfu3+d2u8VVFbGkNYKiWJlAPXWYyukpLAOTiVpOqEdl1vssBuMc3tS0nVcWthG1gChonXWWp58+ZeN73BSMTbhSzNvKcHt3zbbrtEg3uXhbGox1iDU4a8ghHpz8wss1iP7clKcuolplI9L2avoE7ImxB4GHgJTGpRqj/6u5XptgMSZhjeBJ5BxJBesXKB4pqTSwdAHmoUNmFdFaQjDUUbWNX+3WHz6Mw2JwhIbHGRUYA0YLa0pjUota5aglY7jpen78s0955+IBPiTaLhKz0AdNuWIe5/5VvC8nBSesNYhVGk30kW2nkqnWwLQ2WPE4a1jUjpP5ghSU2Xtvfszp/Ijb61vIEeMsdjqlrh22MoiJzKeGI3/CzbqjbwNiMsYJOWZs1ln7+dwBHU7gbHHKpGkYcaeU1Jum6we2mzX9tsfVUx20GpvD0RD7zCos2YSO26eXNBPLvdP7NJMGWzm2/RZbWY6PjjFi8T5iREXZVdfDF0pQ2qn1GJPJeVzQaTeYlVL8SpYwPsNDFPPVE+ewV8PuN3xltb2U4x2kX78MBb6uTE9MgrHQRc9gMrKjYOddkZ/IYAziM5YFk9mcdrkBPyCyp2zvuD8y8pP2k3XWuV2tk3Z72XgDE+PkSo7oe2E0t8+CR/iXP/0pk7ri7PiM6IWhV5ZxKuapOccyTBZLp1pffsiBLvTcLu8IMeKcZTZbcDpvSMFzejxlUTecLabga9q7DdINzM8b6nrOZrvk+sUtKW3pUmQdAtuYSFKRjMPZSfG8VATJdwO+TyQH86YmJ09jjYrvpQJkRBXRTsPA+fER7zw6Ydt51u3A9WrN3XaNsxOgZrXqCG7g7I0TJgLL1TUvXlxyfHbMfLEgk5jM5tw7P8OaCmcszlSQhOCLBnLhxcUY8D6orOrtlrYraVvIe5pZGTiRcspLGQOQPQNSn9wr6NZOPov8c2v2nx8TvzQ1C0SfsSWHTmLpQqIGkExIXnuW428eHckmqpCYiCWYiigO6xRVA6DAr8aMkLJWoNZa1fo1oNNypSHKOKWn7sRuFLPYNc3yru/ShsiHP/2U731ngtgJm9SRUclXQ4BgkJTBjKMAGYmwCVuubpf4IbFoGhaVcHE04f50xmw65eL+fVVXtPrgm/mEWTJMK0skklKg7VZ02TKZnXMyf8Dq+XOG7FkcqyxSsspmGLzn6HROM3julktOmgnrVY/4gBCoKqGxGaJntqi4f/EYN3EMvqf3mdZbzk9rlptjNkNkmzOT5jG3/oZHTx7w+Dvv8+jiAU8eP2E6n5EEnl9fsWm3rO7WvHj+gusXV3TbHu8HLBmRihASfd+yXC5ZLm911scbxJb5eVtOlVw2xfFh2hG+FBUsT+NYRt5N0RoymL1IhQYOZYTm1UAYa9n8C1Fd4BdT0Z8A/wvQlK//uznn/1hEvgP8AXAO/DHwH+acBxFpUA/K3wKugL+ec/7kG98kU8S6Na93lSH6gVBOhChW0REp46nW0MzmNNMpKUSq2Qx8S50FZJT51JTNmMI8yqoDptpjCrcIhT90cB9zSb8Utk6YYtgTs6I0BhXku1ut+elHP+XxxZtURnRCkYTPmWgT2Qg2g00CIdNtdYE4DGfzY84WU+4vGi7OFiwmlto5trfPsQLHR3OcsxhJNM2UPLFsukBIFmdrXA44N2Bdz72TGUlqsI4UA9vNmtPjY1VkMaoM432g7XtS1D4ECISeaVPxzgePmDUVMQutjySrUlMuZ6xVkRsxmXazJnYZ4+B73/0O7//G2xhJ2FrAJJq65uHFOTGdIU8cRhw5JVZ3az768EN+/H//mA8//BntttsBByGo3OvEVXsKmLY8lVBpNf3VxX6gt1CGyEYZ3yH0ZX3sg0vGtZLLAjs8iuCgNipvvHPR/frrFzlZeuAv55zXoj4t/5uI/H3gPwL+85zzH4jIfwX8bdQ/8m8DNznn90TkbwD/GfDXv+kNMpBCIpkMORJzIEkqPoY6GyHGKZzpVGEEYxiCxxlDMoKra1zSXzilV/osJUemsEuNgDMGD2U077AIlPLg9Abaoja5a2CVnzeK4Xq9JGN5ePFQZ24yUKBTQ6KKBpstfQys2i02et589Ij7Rwsen59wb14xtEv67YpeEoum4tHDCyZ1gx8G7u5uub6+pXOW9ZB4fH7B/bMzeu6IBNrBM51PePrlFlJNSl6DeawFElipmTQT2r4HFMDoh4FHxxPefuOMk6NMihuszEBqQoFvB+8ZfMInJYS2fY9EyE7TxxgiEe0fZZPJqHihkUzb91xdPefzzz7j2ZfP1VsnZc5OT3hxecnd3R0paQOzmUyoakVBRRwhql14ypls9z2S6NWhTW++KXWlKnD6ISK20ieT9RkqNC0lFvJLTABQr9JdjZo1wf+26xdR0c/AuvyxKv9m4C8Df7N8/u8A/wkaLH+1fAzwd4H/QkQkfxOXIGdiHLQPX45gMRZXlwARhzEVoAIJfvAYC9HoUZ1jpCoGSKnQvxXvz4W1Ot7A/XFcWUc/Imx5nNwTxrkGBYgK9JjHsVkKyCB4IFrhabekv8w8OL5HY2tMNkzREyuLJeTMZuhoc8/je1N++P4b5HbDm6fC6VwIs5rTB9/hw4/+nF/9wfd5cO9M5/YHz5dPDVRb/uyzn5GbBYtmxlv3jjF5S0iRZlaxWgXOThwnJ/fwIXK36VlteoYhYJxgRWHcvu+wzrDerphUUD2oOF1MMOILcmQg7e3qchZ8iqw3Lcv1hpgTTgxVZZlOa9UfQ1OY5c2aflAZpefPn3N1c8dm26khFYXLhbA4mvL997/LJx//lOeXL+j7DtAWgCv8rrqusVattlOh2scQGbqOVGkPSdQDg1Hq1VphOp+Sc1YrxfJ3dtQfYwQA9uDBfnYllzmoxL+KkwVRNbo/Bt4D/kvgQ+A2a9IPe99IOPCUzDkHEblDU7UXX/f6mUSKPRFXnGoddeU0ZSqFl5BJSW23rWRMjNAH1ZlCu8KBXOYpM4lEiBGTpVC+97GqYhTsLSQOblIeey4FRsmFlnJwN3auYJK1qbfcbui7gePjM6rplMV0okRJWxFSwLop9XDLr37/bU4aYbvteOvh2zy8f0Ims/EVKUUWR1O6YUvoE3U95fzRQ2h6PrtuWVzcZ7qoWXZrhiEq47hvCQGcrZk1ieera4IXjK1wUjwUbaKpLVUt2CFzefkM394h7xzz/MtnrNsNi+MTXJ2IUYjj6FSht4izGOcgenJOTGcN89mUoW+5u1ny5ReXfPb5Z3R+UL1ua7CVwzntfZhxWRbKzGw24Z1332Y+n3N9fatZg3OIKATsw3ZHszF2quqXxtIUiaMQvJJbjeqaxRBIWchWM4J5M6Uy+t6jNbuYMmYR076xnV+lRxW9uc++Pg5+oWDJOUfgRyJyCvx3wK/8It/3TZccGrBWtRbQqejQJnQRuFF+KBLZU18EEFEGLFm1brGmOMUX+gMC1iIjFWt33OayIe5PlZcLvNKQLN82Di5RapsxbDLgUsZm9YrpU2Jj4Tu/8h6L4wW9D2TrmNuK6u6K52nLb3zwAbnbEBvHyfExPiZCijx/seL8/n1cVVHXNZvcETJ0Aa6ub3n04IKLJ094cX3J8m5Fv1VGgKvmzKYNm/WG9fKW9d0V695Rzc6x4sBaQuyxleAsbNa3TGv40Q8/4I3HDxjaDmi4uekYwgbjLM30GKqq5PQqtm2t2nbkGIgp8cf/5J/y/OZztque6JU1jTPYqsKK3vOQdWNraq03dZMXJEHT1Lz51ls8efIOl5dXtP3Apt2qbOxuEQuhH4iyl8JKSV2Xq7pSVC0FmknD4AcVRs+ZyroSnGlPX5HSvCyGUHo2Fb2w8jTHDeKbrv9PaFjO+VZE/hD4HeBURFw5XQ59I0dPyc9ExAEnaKH/6mvtDFjr6TzHoN1y3QEiMUOO6r1hUkKyztkhGWtEi3TRlEhSwk0ajKmIcTTXLLtISgU5OdhFEFJliK6Y7mQpAaiUD0oakrIyB5LsR07T7nZruhKLOohgqI/vwck568ph5k6HxdrIPFn+4vvv8t6bj/j4J3/Ge99/lxA2PH3+ggeP3uB2vebNi2O22xW3G8cXX1zx5I03uVv2/PSLL3n3ux+wvVvTbxLrNSQdrCGEHuu1YZgHIXYRlyuanIl5QELHJvXc3qxYXd9wsXD8pd/8LR7en5NkoJ7WHNsJXZ/Ibc+m6+lCRz3TmSEd2w7M6ikhWXq2DCHy+c9e4MmqwVwp0hdTRkIRXacwiZ3a5okIWIdgaJoZi8UEwRBCQqgI0TN4r4NzQ8/daqVSsRSjqdI8FlF2digaDdZY1TM2eoKN3EBTVA91D4xAeGmDJBcSw1ei4/9nGiYiDwBfAmUK/Dto0f6HwF9DEbG/xcuekn8L+KPy9//oG+sVQAsBhV7VcavULclrDZJSoW9owzIU4yMxyrsSUzGptPMtMs7cF9GLlAtzeR8sqQjDWeOKK7HeqJfxev2z/hyU7mWpewoknygUcYXQdhZ/MWXiusUGz6KuOHeRd07P6Fa3NA6sRLq+52i6ILSR5AcW0wntasNnl7cMwbHZDoSYcLYmZ8Pqbsty2bLdeoJPzBZCCAP4wKyaU89mVLMphgnZQk6BIbZ02w3LF1/yqx98lx+89zbTyhCHnrv1hhyE4C0ZFR03VU2fYHlzR8iWYBxDIUYqFV6wVlkBUpASOzYIU9rN7+dsioRrJuehsI+92gBG8NkXSp5lOp0SosMYQ9M0WOd49Bi22y1+gNVqyWazYbvd0Pc91hnECM4WLYAQyTEXJnnaLfkRMt41ucanPH4oB+3Kw3ThG65f5GR5A/g7pW4xwH+Tc/57IvJj4A9E5D8F/gQ1aaX8/78WkT8HroG/8a3vkDMSg67+Ys2lR2rGOoMrjb4hhB3EjOjDM0ZI0dNuNwXx2ksjZRLE/BLOvpfJUbUSJfYd4CSjsqL+WC/Dyod4iuwRR+3UBzbbNav1kuRqbMqcpsDDY8OFS7xxcZ/N3S2LWYUzCWcNgqVrA5v1kmnzPY4XC3J1wt16IKZMP3hiymQMm+1A3ydSMkUoPHLv3ikuC2EQep/xuWLTeo5Pjoih7NTrFQ9P5/z2b77PpAbJFj9MSdnRbQMxZDIVQcDniMfiU2LZdmx9pB0Ctp6oIJ2FUUs6j86/qKHsGDQ6L6SniHNWSaFWGIYOP3isVSFxVcc3uyA0Vv1WvO/JIlSVo3aW+fQ+IZ5qv817uq5ls17Rtj3BB2LQyU6MbqjmIADUna3kziIH50ZGstn9vHmXeH/z9YugYf8c+M2f8/mPgL/4cz7fAb//re98cAlgxxn8nJGsQp6VgZxGJapEVRlcVeZLij6UNlRUcEFfaV+bZFQEYrwPMlI7ktpOjOzXV7eUXNAzHRLT/syrm08uX6iFYcBKRQxBNXadojuV3/DGccN7p+c8++IZ2SfeefIIjGd2PGXwjn7tuXdxwd16y2w2Y7vtqasGZwzbdsPZvTPqugHZouLvFusibzw6597phKefP8OahuWqI0X1g7+5viMMG/puzcOzE37wwbvYFHHZkcUQUwbbgLPKYh4y2xAR5whi6ZLHNlOaKhOtJyTwoSekjuA81gpSvFlMGaYbafSuiCSOdJbgpYxdZ8bm76iuE4IvPZdU7PWUjhQL0bIq1naVc1rTVobZtObe6amOMA+B9WbLdrNls93qaxltK+SkqZsbVfLHPpmRcgq9Qpv5toKF16WDjyp8ZIoYHkqc8znhColRTCbkWBa65rGamurghJ4kXw0WsuxuxNid1916PIb3EKLCX/LSEb1LxcY/l6ZkFgrEbIptgZI1+66lqkF84jvnJzxZOPLmijh4mtkRN5sl3q84vXdKcoZ16FgPgc8vr7g4F+5WG+7fn9G1ay5fPOX07BFi4PbujsGrSqM4jzUDTT1ByFzf3LFcbcBkVuuOrm2ZTw2//itvc//+PUzObG5bWmMwTUMQg48Qk05jDlHncdrNBjddMCRohwGsw1QN58cnXF1fsWxXtN2moFy1jhE7nVGxlTqA+RDIWV2/lKipcHBExx/G4bdDTbcYAyZbprOpaowZbQM4YYdSqQ3f6DFqVem/rphMa9K9I7puIPiwm8Xvuo6+7ym74o5iE5NWnaP6qWoh77OJb7pei2ARMpJjmY5T2kJOSRteoAJrB/+Mxyoc7PAj3Dsu67wXkB4bUyJFGFo0KA41o8ZCJEmZ4Sar1pYxBXoswSSCLUIIIpTJwbKbCgx9T50nzJLnN9664KReY2LD+ckUmcz58uknWOc5u39OGgLEwL2zI+aThmdXV1wvN5xf3KcLPYHI0dkRt8sl1tQ0taHtVlw8vsfFg/vkMGDE0G63xNDhY0v0Aw8fHPPBe+9wNK/LYWsRqUhZWK4G2hgwtiFGwUcd4Epi6GIkbLaIMXTeEwdPQFh3PSkH2qGnTRti52lmM46OjqmbRu36vJ70yjdTM1YRoXIVfVJBQeuEUIa0Qg5qjzhvqN1cKfbocwop4qxRtrMRRBwpCRaVmI2pqOPoYBDGZqYTC3VVkFBoakfOMyi9npRUIMSWIIlRa8ycMyHGXf/lm67XIlgAmtoiYgkxUxtDLOonSUa/QFFp45yBSCw3RX0GYUyQdrYVY/YqUvxY9s1JI5TeiSa2e9YrZBN2njBG9qOsJapKTq5fn8kgKgAu1qqq/DDgbMU7ZzVvn1qyB+uOaJqeqrI8eeNNPB05CnfPrphLw5uPTukCXF/d4uqam82SLkcePXmLPgSeX66BKTkNbJcvyN2UCsdqu6Vdt0ga8EOLqTLvvvOQ777zpEwKKvCQJZOySsX23uI9eFExv5QNfQjFZUzoYq+Cfz4QUiYAWQaMTaz7LW3scY0hbwf69pqbymCdKxuI0NSNZkKyF4Wo61qL/NpiK4d1Busqqkrvb5Uy5LA7422xMxyllYwS+QpDIFFbIWUL2ZKwIB5xudSs4wizoes6gi8if85QifZzRARbQT2pX0rJfincil8WQCs3p3CLtCYZxRN4qWjYtUcOjtCXMk8phb3sRaK1vWl2Xfv0SqrqSrfZlv7CPlUrkDKyn+tHd6V6WkOG46MFNidmvuWDt9+iCgPWGNabO9rgmc7m1JM5gRo/9DjnOD06IW5anj69YtgmnG2QpFOjPiSub17QbQ3GNCyXd0Ck2yxZ3l7x4vKKq6tLvA8spo4nTx5xenoE2StsLboRpCT0IdENkc5nVd63BZq3NW0cuGs924iqxehRUxafNnjbsKXzPUk0kHLUjSJ7MGbvU19XPSJaY47idqOiztHxgsY6JraiclYVK4uFoZGXa4jxetUBwVi1ArFYyEYJGkZBn3zgH2ptQdpcpO8HHWGWpOmXsTskkxx3rIVfihl8KDeFsQgsvQwp6Y+MivZQSPrlK8bP7fvwAlAkQIFS6BVinZGdx5HJYLNKh6q3vTapDHuKBHnU4D2oWfKe7ZplFN/TuW9ixOXM0bDhsctMkmcTO1ztmFSC77e4VLH1nbKCj46oq4rPv3zG9eUdd4MwPb6HoWZaCXe3L3BSMZ009ANUtdNFnAeWdzdcXV2yXi+ZzRd87923OZrrNGXBAdUPNQuDz/Qe+mjoYmaIieQjiKXdbLnbBtqoTO8oBskRKwaMKumkFFi2S0KOZKN26TGWfkYWlbqlTKl6D6KLdxSsGKciQ9fThUgePKGyGAvOWZ1kLKxjFZ4o/ZLyHEa3L2PVXGm72aK75ahUyY7KcsgJHB0ZduwAH3SYTCJi9z2XPJrxHgiZ/LzrtQkWKUX1DrYtN0HGpkZBrdJul1GYlzFgRjVEOVzU5VQaXXKLumRMSYPF2TJ3ogGZsgotqTh5JJZBSoMpx/UYOgpRixHtGNvSkwkelxPHuefRDI4ay+df3nAyOSaV4tJZYXl7S9v3PLr/CB89q+3AzbpnMDMaqUEMdze3LG9vmE6PqStHiEIzaTg/e8TpwnB1pVOJR6cnnJ6dYhtHsrq5hAzgGFJm6HXMuY9pp182REhJU95V61m1gYAlixu3WMbZk5QjXdjShq3uzJgCqeeS3o2py6hdoMCHzrJoEe+LKxf9QOUcoe5pGqfBX9eYRoMq5f1ppFOeRUGmXGqSqyqk2pjU550KCDAG52hFMQI91grGVDhXUddqie79wKjoTwFqRqHxr7tei2DJOeO9Shrl3YnyddfhUZl3TcexKZLlFcXCscFo0IAS3Xl7yWSbYVphTaOnSIyIKW5VhS1hUwmE3VCYInOQyEEQl2nblgzM5zNsSrz/9iMenU6pJHB0coRNjsYksveanhjLw4tHWnjmDNMF1RF0gxBEGPzAZrvE2YQxsaQ1CrXOZjOyDNyt14RseHF1xRcvnvHmW49ZLI44Pj4mZSnTiYZ+SCoAGKGL0IbMEDM+W4YQ2Xodl/Ze38c4N25LRAn0ueN2e4snKIjBKDih91vGrV9Kn0NglJqKMe5Sm7ZtwVrqxYIUAtGANUKyQacwD9KwsUbZWXuU7CDnzN3tHRSDqTEX0XJU19ChKMWe0l/S+7LhzWZT+l6nQGNMhBAJPv5y1Cw557IbFPZrSbVG9ErG47j8N7FvNErWwzqQyCZjCnWFotASc7nRomCAMYbpdMbJ6SmL4yPm84VCm7F0qQXazYaffvgRy+tbQhkqkqgn2A5mVOUFyFBZoakcHkdtDO9fnLKYqV/9dnkLyXF2do8e1RdYLObE4LHiaPseLw2b4Y7Bq4ZY1w1qQuRqRDLtsGa1TVzeXrM4yRzdr4iSWa233NzesTid8PTyMzY/6wjB8ujiHd549ASLI0bofKKNQhtEgyNmhqTqNENRvs05YawgDEXKNdDHjpv1FTH3VOMGUaYQSQVIGQfcBEWuTGFtF2ZD7RzOGKrpFEumriusVZ8XZ52Kh8Sw69doM0QLf1d2zFQaxUYcKQU9+ZNSoeKYacBIDNw9/5HmNKr9K5VJUS9LpinPPZhAtEZNmr7hei2CBcZdaI9YjVVINqoKQjmapaRqOev47AgVZ6PDVzlGtWgjEyWTjaWeTDg+O+H49IT5bKrBUdWEIophrSWFUFIuYVE3/OCHC66eP+eTjz6iXW2oDTix1K7QLIzoIqgnNFXCORhsxdTB2/eOEKvgwcQYbjcb4vGZKkmSqaxFcubm+obNuufFncF3PTHBerMky4TL9Ybz0xN641nFLV8slzy9umF6pnVIG3uSeB6/eY+z8zlZAlBxfRsYQiJlWzYAISB0MbPxmU0f8UEDZsRPdull9qQcwGR86rnbXNMPW5CIzYVMMo70iqKKSn8pRWDhXlVicGJ2jcXJZKIsYCNMJk2pTSjpkSCSMJJ3dekYaASdZDXFeyemVAxU99rWOzpkASYO9RdGgGjMUkZJpJGilENQilRZY/W0+cY1+loEy26wKmsT0RZadk6psIzTDgo2KHwcUtTzp+SsPiWwFjtpaBZzJvMZ8+MjZtMjqqYhFfVHIes0Y0kRXj22Q06FiyZcvPmY0/NzPvv4E66+eE4lQu0sTthRK1J5iBICtuq5vzjidDElZ4+xlqaZcEKFEWE+m9K2LYKwXm159vyG5bLlqkt0XoUv2mHFz55uwRru1hu6vGQTBjadkCthoOJPP7lkdf2M995+yGJR4YcW6yxDHBBrubm+JdnPeXjxiMpW5JTpg6ftI/2gTdmU9RTX31uZ0xoOEWuE9fKavlsjNu7QRAqgYUR2wnSjsZCxovR8a6mMwaJTmnWl8kzOVYihFN1GOV7ldcWkXW1iTEkCi1mrBpbKxdpiKy62AiPaAD1YR3KwnlJKO1e48XpV1MIXj5yqqg6g1a+/XotgGS9FrEbbMzMCXbuZ6gQFeaGIaoOpLfPFCbOjI2bzBc1simtqspGihC/40VW4pG/jcNeO21WkdkJScT8rMJlOuX9+zs3VC97/tV+jfWvNZx9/xLBe6kSijEBDIonKKzmJvHVvju82pGnDKAOUcyzQlMf3LVJNVOAiW3wSWjpijszcBGcrhlVgu4nQLLBVxaRx1M2M7Sbw7PmSaE7YpiXPlx3NdIYkQ7ftGGJk2UauNy3P1xuY1Dw6vyBZCBl6r2zutEMU864Zq1MYOkRXNQaRiJig1BaRwlIoCXLOZaGXs9gYnCsnSVVRG3Usq6qKaTlVzFi4GylBM1qxKyRwyN07pNGMKv5jfVRZp2B2HuV8Dzdb/dkOnb8Or1H5cqTVaHsuk+LIlv7m67UIlhHmE7FYUzHuEakM7Yx5qTEGN2mYLY5wdcXJ2SmuqbHOlfJBiHJg6Cm62+XC8SIp9WEUXRMjOwnRkcm6V923rFYr5kfHkBKVrfnR/XtcfvE5X3z6CcPQFkgasljEWSZ1zZOLcyRnvnz6nGbSsF1vqOspRqDbbhm6FmscItDMalzXYYfE8aShCZC6gWoTqEOiW6/oXMYcn3Lx1vf4sv+S3/zRb/AP/td/zN0msOlbuqQ1Qdfq9KRUNb5yrDctf/7px0wmE+pqUXTS5ADB0nqvjNWRc6SuHVVliKFj0lR0odw7ERDdhU1BLZ01uwWvIndKnKyco3GWplIR77py+9qzLH6VSFYhwP01hq8auiIGsW6HfJrSOBzrVmNd8e+M2oGXzNhbHlGz8YR5VUduvEYmxte6kr1yvRbBcnilMtpqnCNaR13XzOZz5vM5s9mMi0ePGHKi7bqdGn0so8U5F/VDNIU248aJpm/WOc2LgzIAKI2oqqq0N5FUvR4gDIHovXKYEtSzBofw5rvvcHb/nI8//pB2ea0nlK00PRRLbR1D1xNiwnhP1/W4akKMAckwqWtlBA8tthaqSnirXiDdQNp6TD0jx0zEqKK9nXF+/gG/8mu/y83mD3l++4LN8IIBz3x+zGUbSHhCH3CmogDIGQAAIABJREFUYtrURInYac31+paffPwTfuX9HxFSUt/NA6h31EcTKfKoRghDxNaGuq6pB3X1SqLzQ+OiN0a79qYETOUqbBHHaKoKaxK1c+VrxwRaUUR5yVvv1Su/nIZJUJE8o6dYSlq0j9oSVihC4FqvajppdoGVKbJLORTxxPL7MjYiKH2W9DUKMC9fr0WwZIQBS11PaGZTZrM586MjmvkC6yzOVWQyx0dHZGNYXi/LA1ZcPMRQmMowci0kCeaALZxKk4tclFrKDbWjMHhWo07n7A46ffTwUUFThL54jZzfv8fFO2/x9g/e5+Of/Et+9tGHXD5/xt0QePcUFo12lR9cPKTtN/Shx7Qb5nOlemBVkK+eVHTLDc4lvO9g2zFxE677li5nhmhIpqI3EzZD4H/+B/8TH/zoPX78yb/QE9M57lbrUnNFjBiOFlMQhyQNipQjH/3sU8QuODp6WKDdwmAoUHjOGR88i3qClURkT5F3lSHjS3ddd3lntN5wTlOrqtbuvLVWu/JisCarRrIUeSl9yIwc75d3+MPgOUgLAYKmWiP6psTZ8sxyKlJXZhcAZqfmoil4GJvHu7cah9RL4FtDGk+mouT5TddrESzWOb73wQ+YLea4ulJfDVE6vYhCxfP5HLGWu7s7VWdx6pwLKJU7o0FipChNik5XjvQHY4ihjCYX8GC8RIQUip970cZdLBas12uaptFCUWCIgacvLjFX2iCsF8e8+e67iBE+//QLZk3F0Wyifo7WMPiu7MDqzx5CoPcDucxyDEPPdFJD1bIaOmw9YxMDyyEQxBGs5eLddzi995Cf/On/w7Rp6HuvOsRex6rr2nFyfMLRYq5uvYPXRmvIkC0hCxjH4vgYf3tTejCOSKLrWoZ+wDkL0ujOn0dWruAqnSPS9oTSU5xz1LXbBUvd1Ds7CC3erVJIxrpo7JIX5fwRVBk/HpuQeqUd7WRc/ArgAElZBcaMbmC6RuIubVYxxBE6zqinpRHBOnZplpSGcwaCV6hYlTHNL8fJUjc1sxO1hUt2n2tKyaGapqFtW9brNbZAkV3X7W42sO/c70SkdZgohEAzmezQrrHRtSdIsuMS6XwMHB+d0pb5CO8D98/v08wnpJSoK8d6veLs9JTnl5fYo2N+53d/h+efPWP7yU+Y1w3h7prPP7/j5OSEupogxnJ9ewspYauKkBJt2zKbzDAR1v1AyoYXq54vVj29NERbc/HBe/zeX/kr/P3/4R/y63/hN9WmAoMrZYR1locPLzg6OuLu9pa+6w+G20YNYMFWNc8uLwtPzpZOle6us/mcurIgmVhOKEH1xeqqZuRbp6gLTeFenYQc7+XhfdR7PAaIoo52B9ro14UQfi4P7NWNXU979sHBSE0JBSkrJNuyWcZY0FOjJ4zKQb3svTKinyPJc6xXDn+mr7tei2AZC3Mo2HppRI4/etu2pJSYTqeI6KzCuJPtCnJrCkdL3XANhs8++4y7uzvm8zkPHz5kMpno+x0gL+PJMwbSyckJbdvivcc5x2JxRNf33K5X5BSpnCWGwGa5IqfMvKlIg+fFs+ecGUe7XDPpe3KMXF/dEBNs+zUihspYxFL6O4Z2s8JGkGToo+VZ67kJhk4c0/kR/+7v/wf89//t3+PDjz/ke+9/l/OH91n/70tIKrmQSfRDYPv8Oe22xZYTa7yGEAkYnl/dcnx0T5kAkjBYQkq4utbUw0BKgRh75k2DjwPGwqRuiAUWFkxRRBGsc7uxhcN7t7uXcezmy65GOVyg44I9/Nw49XoYUEYAq4IXSijWvlFKClcnwFUOQeiHXhe/SEHrVJQiFgEiERUZjzHuHMTG9wf2ViTfcL0WwQLaYzLlxh4OWo0L+/Hjx1xeXr5EaTh0c4peBaxTEdTLYnj46CH3799ntGp79fvG79Wd0lDXDev1pnjUG87v3We1WgEwX8zIKTFtGoIf2K7X+L6nv2r5YnVHv9oSUk+73uBSz+L4mKubJSkrlQQTaSaKtt3c3DJfHDOfzther0AasjP0Ft589zv86Ycf8b3vv8c/+6d/wp/+sz/h7N59nl59wY9/8s/x0TOdLDCmou1a1utWCaKmUhKk6GTn4AMhgnENV7dLJpMTmkbRn7HI32w2VJXTWoeM2XHctMivnKJjGiwFiodd85Gcd6eHPsORIZyoCkHSZNlRkA7v+eHHo+bBqG2cc+L46IiqtqzWG3KZS8o7JnR5jQRd0UgeM4XREVmBCT19w6BK/GOaOCJkOzrNAbXmm67XIlhG+HF3NI+pRDkm67rmxYsXhT+2fyiHKvkj63TcuQSlc1eueolbNELQcEizQYeU+q6Mv8LjNy7UXDXqg2uco2s7rp5dslre0rcdoe1J7ZrQbahdQxIVg7MTgzXCyfEJT59fM/LdurbDTSZQ6qccM198+jmxm/DlzcAwv08K2mD9oz/6IzYyME2Wd996zOX1My6vnmMMVDRQWyaTuRIxN2tNlVD429UOqSJVQnWP20Tb9czmx8qNSNpc7P2gKFPWk8A6zfmdc9pHsip0qMwevYeR0rEXJTNSnsUI1+qizrvx4Mw4PMcuFX51cY7zQqmMBMQYuL27ZT6flMlWGKFuySPnq0DIpb4dU6kRok5k+jBAysoeeCVVHAO2qqrdx+Na+LrrtQgWMjgrhKxTe6qarr+AGEPXay6utPsMeX8yxKg7Rm1rbVgWepEkVcwlgTFV0f/ai06PHXhXK4ly6NRV15CZTmc0tiFkjwEunz0ldC3tdsPQdQxdz9AF/NAjqaPBYG3G1koj9xkwDkzEVZab6yV1M6GeWrx4emP4+JPPkaUntZarTeJZ33Pnn7G+es4wZEwGV/XEyYxf/60f8T/+o3/IrGrwkomtxZlG59YZWEwqXOWK/yU005kya0OgchPc/ZrptAGJxOgBT1057p0tsNaoumcCwZGKeISYQOV0cME5S3A6R2LK7c/o140mrTpgV1R1spJMQwaHIVtlIGspWXpoL5EWbemt5N2pl8ksl1tSylhnyWPPhbGbrMX7UEAblc8VfGkwxhSRlDHOfuUkM0aNsXIhUY7vN55aX3e9FsEy+qdTrJ1TKpZnMTEMA8DuxBh5SV8txjIjzT7nXGSRRhtovRmxcIVGjD3lTPYREYMYPcGMEWKIfPbpZ3RtS9eu8X1H6Hv6bksYegUecqFeoCTOLvTIpGY6m2KTuk9VVcX5+T1ulyuctSRn8DHSrre0655+NYA3PN22bBC6GAgxY8VSGYu1NZN7Z2yTp5o0DFsdI3bNDBGFzNPgmU5mTKYTckqEmOjanqqqsU1NjPp1UO9+d4yysZtKIflcLOaIGXG646ecNHW148IsbYqoaKEt9wy0RtT59jGSdLyCjM7AJGUwH9psv3SyICWQyjexe5ndSTXEYZ815H0je0zdU1L1l7EmsU7FxaMP2qcZfSrz/j3G19ul7r8MaFiMgb7rmC7mO0oEIy3joMYYj+uxr3VosZZ2LlN6AyWVY72YraYyELajO2QdDxa7V3zZ3q7ph5YwBMLgyd4TfEccOqWVh0F5alkKTBnJkggJJCeGKMQc6YeeyXyqogqTKW+99SZX17cMQefaz+yEjZ3wwliedhuuYqKNkb4MoTnAkXGm5vGTt/ji6jlDilw+e8GknnN2eg+VIHKAQrzWOhKB5HUqUCQymTZsN9qTStMKU8avBVWGjCngg+p6VcYRog539b6jmmbE1mSjfYgcFTFsqnpn0KS2hZlKpAjeZaKgFuwiOgKegZR2lKJxgY41JICMOmRSkknZe+qM1z69Zq8/zUGBLhaMUFcNo8hIFnZNZsrMkoyUGDkIll9wnb4WwZJiYr1cYSrH/0vdu8RYlmVpWt/ae59z7r32dA93j4jMzsxKVSYPCXXRRUlIPKRqWmqJpkUz6gkTEBITkJggmp4yghH0CCExgQHiMehZdfFo1MNGQAmEKLq7sqozMjIyIjzC3V73cc7Zj8Vg7X3uNc/ICK+uLMnzSObmZnbtmtm5e++11r/+9f9dv6qNs6OrU0MpjiQ4g4ad8yefM5LkQiLTSuPPTRnERPXEm4ohpTCNE+M0M02ROKc6d54gK5qy6fvmGUo64Rw1xUqzTUAKGRAKCUcRZdgMjNOBm9s7njx5j7P1mnSRuL+/5eazVwys6FLm4eHAzSHxkApzFWdwVTTBh8Dq8pI/++d+kx998hHj4UAcI6tg0q1Npmm12ljaU0Do8E4Z+iaw7Tk/P7N6nHZw14nQ2ozNOTMMwwKCNDUVEUO/SinWS3GeJngITVLI7rdznpgTnQ90zpNOCv6S81IvHpEv9wiqbXPxDTcwkubPjxnbgFiFsrWQ57yAM4hFjza3v7Q6VY9a1yfpW6HC0Ng68eJO9+ZXXu/EZkEM1XAPD5xfOAjdgrS0a4EdqbQHOZmrr91hV+HF1qm1Po2RGcmFec6kOHMYJ6Yq+jbPJtxXcrNvKzV9s42mFY6m5AoAKbkkWltaKpsZlClH0ysOSsppWZClFPrQkSYlhJ6CEi56dp/esC3RoG6hpknGQCjB8+u/+Rv8xm/9Jr/3f/8eh5s7+/vEdAFKsR68d5VkWg1HQ+gJ/YD31k1Z9avH/iaqHA4T5+fm8zisViBNKNsW5NAPeF8IXYcfBkOXilGQXEXTcq1NoLDuOrT4mp7a37FsjHrQpXS0MMw5PxICUU11s1REK7ceyDFdK6WQUlpQrBDCo7QOEWJOC2zcVo5TgdOeGlQn4yNk/E1DX+16NzaLQsmZh7t7gu/wZ+eEdpMrFcH6UtU4tZ5cDQZ0jQ+katZ3DcNXoWRlHGfGcWKeMzFmm8NOkZRtUs45Ez+o8ep4wIjVJkibvmSpUyy3s4JUBbLAfpq53z7w4sU5aco8f/GMw37i4WHH7e09n37xCvHKd77/PVwU+ps98fCatesr7cR824s4tO/ori/4nd/9XV59+hnzdmcypS4sh0WjzI/jSNcP5Fz5VzhD9aTNp1PTRkgxmzW6q36R3tVT9nEX23lf+ylYsezconpjp7OvM+/wsNvRiY1VCPL4eRbk0W7paW/reBgWmsMySG0Sm0D8op28sDGOy+a0KdoK97YZl16agmpF5EqrV6Sigs0k9+trlXa9G5uFgo8HhMB8e8M6KG69wumAw1USIHZioeC8nZTthmujRJiP4zROTPuZkiEn82Rv4m9kGxBzpQ4YYZtPm/i0w9KcQpWNDdW4pzodL5OcduNdNpq+BGs2Cg6Ssr275+LsrHbAhZe7PT/74hUv3v+An3y5449e3jD5AVkNPH/xBEWZS2S7O/BwvyelA3/rb/0OK9/j00zKI44enyDNE93QL422zncEccxltprHic2sFOs3cCJr6p1ns96gyeq0rq8ChXUnJGwIby4wzpmhMnuLlJpyOYLzOFdP9pIIndUrJptkNaWrInptdXtnc/AppQWibYu8pVzS0ihtguDUcWf73bvuGE2aFnXTACvl+Dg4Sd2ovZdsniziataAmU616PY21zuxWcx7ZcJRmKfCw53h50MX6IKn6zpiyhQt9UX3RtArhTQlkibiNDHPIylG5sk2SooWaXItSF0dSnL62MHYYQRfa3TJIzq41oGo5VRT0GIwpaqiUkwCWDMXZyvO1yb6cHX11KKWQkAIONbdJf/wx6/5ye1HTN2KzfUTfM7stjvOLs9YDxt2h6nm34IvhZIjOc52j7AN2VOzHSwHH6eJMh4YxwNPnjwxwmbOaEpLWuld5VVphVxnG5wKLhDTzDxH+mpPuOoGg9odTCWikhE9Ek5NziAjWgjVnc0imh0jQhMw1ONEo/Mo+pVd8tN023u/pFvLVOPC1mis5GMt09K7n1tTJ/VOi3ZVXH/5+ikN5m2ud2OzOAHJ1sUvpuq4f9jhzgNPnj7h6vrKcun1mvX6jE8+/oyffPQx+92+crgiKVnu36yhRTxCWKBoS1kq/V+P8xGOOp+varYJTY4VQ4tKiWQ9sQwvDi1HtM5ObTvBnlxf0q86YkycXV0xj1tDjlIhTZntFj5/ldhxSZSOeDMiU2Y37kCEzeWZkSMrUtRjhEmqNG0SQSs9vpamSPB0MkApdb7doq5z4IOg6mrmUSrz2lK3nKNB5eKZDsaKCN5Z/8Y5XBBcH5hLBAqBNgBWB3m1zsWUxh47Uvil+j2iuhAd2xI/RcHadTp3ctpsPkVBT9kXp7VP+/rpe+BRrWNM5ceb9E34+m2ut94sYir6/wfwiar+ZRH5Pr8kA1bnPF0YLKcUIGcO+z1GBkx8/tlnNTIYTyhH4XCY2d7vmKeRlCbbKLR82/SPi2ZEm2Sr/SxDc9yCtmmFN0Vba6z2YUqBSnNvtJucq5ZVLajVFYQC4kiq/PTlDTf7xNmqwzsrnn3vuHvI3Nwd+OjzOw6yxq/OiaUQ44HO9wTXsX3Ysd3vccEbKlUUUqakhBMli0GpRVsN4ZljMoXHvsNrU1wrHMYdRfMya2I9k+4RDX2QrrKNYbUaUCkgGddZKta5jikZlAyW7zvf6DJgqZNHa1pzbBbXCHNCKWm9kTafecqg+KoBrcbmOB3IOu26v/m1U37a6cZaPq45gtR6SHgcedrzf9P1x9la/x7w/518/J9gBqw/AG4w41U4MWAF/tP6uK+9SoHzs2u8eDSn+paJ48Q8TuSYmKfIeDAE63DYs98dOByq0qBms6xTw9FL86Bv4Xm5MQZTLidjRVhSSpRUYdGSoCI9RbXykSwnabQacVWiiGymOEVI2vPFQ+Z//Lv/Lw9TRjAh68M88dmrW37/Dz/m1ZzYppnD4Y55vGO/23K/Hdk+7Jnq32JsBktF5nlEmz+NmmCHd76KZwvihYfdlt1hjzpDtApKLJEpjlUrOuMc1TDI1CKdE/BmoDrnGdc78EpiIsrM6mKgX/eYdUSPaIeTAHhKFnI2FnLOSkqlkS2s5lsa7I2dfNKIrBvBxiuor8lJOvzG47uuW/hcLSI1uDtX4OcUKDjddC1F+2pAgbpGjo893Yy/6HqrzSIifwb4V4D/sn4swL+EGayCGbD+a/X/f6V+TP36X5BvSAxzLuQS2Gwu6uFU0JSNHFmouk7RLB3meRnEshsG5lfobPBIfE0Vmpokx38rrFigzufbDcvJNielgOYaUaoItQIu4H1nulxXZ6w3HeeXa55cnzN0vkKojlk7fu8PPuHzuz2h83ReePXqFZ9+ecOUPbnrGfNMnncQD4gWkhrkeZxfpKrRzycNVDsVvcDZZoVzlrpO08w4WVSNcSanyQyOKLUYNjqKoMQ4Mc/T4iRQNKEukSUzl5niMtI7zp6sWV30hN4Wqccj6lEMnaoBtwp0t3uoC0Bwej41FnFrNDdGdFvw8zw/qkm6rqtSr6ca06cbyj1KnVoq1nhhMcbl7bSWOY1gbQw5JvN2yVUU/PTn/KLrbdOw/wz4D4CL+vF7/AkNWOXUUzL03DxMvPfkgtUqkeeD7eIMOSVynok5YhrFQk4Q04hW+7NSnIniUcCp9d2kwavtVAEU8oJk1bqlNsCaSkl2Hck5NHj8KrAePKKZePeAlgS+0HWFvt+w6tbEdeDl5y9xmhAX+CwG/pff/xmrleef+u5Tpuj5w4/vuNkWJjfbglFfI0VBnJIplCIw25hBzHtyjmhZ29/grE7qgtK5iKrD07FZWz+l7z1OZ5yriiiirIZVBRgcUmo/JljTFIzjNY8H7scdzz54ztXVNavVQOkms4Cos/ciGe9Nu8upoWlaUUml9XwMkJBay7W6xVZg63fVXk8uSwo1DIMV7rm+OGLAQTvcGmGybTITBndkSUtUaBugHYQtorRUztZ/BQoaMFDKQu7UJZv7JbCOReQvAy9V9f8Ukd/+xmd8y0tPPCWH9YWOc+H2dsez62sOipkYiRXYIuYfOMfaPMxVwbKAldanTwyL/BhU1IrjhpHjY5rSo3SeIh7tBvzFJZvzc5IqpUSUjGhEx0ge9zy9uGTVZbzvSFEJmzXDas00JXIRxHn+tz/8nM9fv+a3f+PXuewv+PEXD8SwoXX9TSDDVyaIgQ5eAo6O3q9APXneWVdZzZBJGr1EtcqXZoa+p/NCTrN9PjRXLZN9UGe/j9aaRZMyTiP7w8T9/SvuHm754Lsfcv3snNCDC6bTVYosKU1Lj2p75bGQXb3hpShJlVCnFdthJLT6oSxTiW0Rn6ZAPhjHzE7/40ZoxNAWsay8LChHAKCha6dp1GmKXSQvLgxFT1CwOi1p9+sYxb7uepvI8s8D/6qI/CVgBVwCf4M/oQHr6aVAoWN/SOyGxOXlE7YPN2SdSNUxqlTZFlWTMc3JxkyXrjF2U9uJZmhMozlUyLDN6WOUfIfl9NkJbjjHbS4Znj4jI5ScKNHjNZmffddT4swwrFl3yeglQQ3KHTaM4x7nOwrC69ize5X59H/9v/jOak2hmubkTE6x9oQ4poEugHSIG1hfvMcHT6740Y/+Pi6NlX2tS1O07fecIjhBNTHtd+SUOD+/xNU5klwyKkIkk0vi4dUtt7c3bHc7a0xKYlh1XFyfcb+74SKs8a7Hy7D0b1q9EJfuO1B0ObEb3UXVfr+sWl22wIv1N1Kc0VLMMq8iUqfo1eOm5ZGGY2PIx/TruFmOYxinjc/TjQIsNU0lziyNa++bdfnbQ8btehubvL8O/PX6x/028O+r6r8uIv8DvywDVhGQnoJw97Cn6zasNmseHibynAi+Q3OdnlRlHqeF1rBwgOrzHAW8Oa4utcEmO5yNtlJyQXWmaCK7Hj9cUKo9A2IQqjpwpdIwhg1lfyD4nhCs2enqXHgfBoSEo7dmnO9IwJjVbO/ibJZ/GFZk0kM2Ajv4wOQCq/WG9z/4HmPMqO8q38z4Tg4oIkQtzDnjUELnEVHrseT5aA+hplwTS+Lm7pbXr28ZxwOQKvvA/j51DtcFPv74pzyfr9mcf5ukhu61OqIJbTvnSDlbxI6pIlYt6hmnzdKfUuFlIVbI2zmh6ztEjhT40/5GS7W05cmYxGtLrWyGye6Gfc9xhun0fXMSO+3et1pFMKV/fwInm0Jmo9fk5fFfd/1J+ix/jV+WASuydOWTRr68ecWHL57gnEkIoZVGgWOcDkbC4zHv7c1zQnODIh2Qa5TJ5DRbf0CVIBHvSpXXKVBgikZvVzGNLbMmcLgwIC5YHVDJmN5bk/N8dc42FMCkXU00Q/DunEE9/jATcXRi/SQQUi54FQbnCdIhcyHv9gyh4yd/8PdxOdGSHVWb+sN7xjQTd9QIIsxxRCiIF3b7LepAguP13Q2fvvyMVKSK1llPaOl/AOMYSfPE0HfkWcgBxKVlMbc0bGkOVlb3gjC98XUVYXsYcaoMXWAYOoITSkmPFvQpAtYOtmO0qhGj1pxt/BdkiTino9On6dNpn6alYmiLy0e0rM3dix4j2dukYn+szaKqfwf4O/X/f8QvyYAVsEJcjN4Q80SMhc36nO32Huc8JWVDL2r6VX/YgqHrsrQEiiniW2GSrfZIBqE6zTjqZKBTgoOualUlVeYccV2w9M6eCidCHwaSC0zRHHdFvKUgCYTA+i4yRVmEsXOjw6in+EBSBbXTVgr4An1wnPcdKToO44HbT3/CXApFCp0XUvt7sIg05sSX97d0YvMavgtVI9jmWGI2t7QxTtze36FU3hssJ2x7SlEhJ+sC376+5+bVHS+659Apoe+qb6Y8Smecd3jnSSkCRrMvRYmzce+meSaEwLAajN4iHu+qmF3dbK0Ab7/T8f0pdlknIfUNsmwjjSoLn6uRKLV6R7bP6TJXU+O5NNrLkWco+ngk+pe6Wf70Lq2yRdn+yOIY94kXz6+4u7vBe8+cEnE2mNKfFJF2I5RMMv9H9caiLyauZrMSJifmBcQbPOySAmbv5nHkkqrOMcaKVHC06b6Cx1QkY4504QzRRM7KlDO+E0LvmFK1TsDblGQ60OXCwTnQhIjJuAqODs9aHOdBCH7DPkxsywGKCXfbejQ3dRUjOx7iyP7wsKjLw3F8oQDF8QgZwtxU6iMfoz1Ww9ldTKVw8+qGJ9dXDGFFnZYiacEHzyp0SDkOSUkdzMuxME7WCwvBc31xQUrRGrt1wZZS77uyiFc8ikaq9XXX2qNpvawGRbdx4/Zbm9xqq3EWNnMpNtNTCiU32LicPKdt1uJMK0xb76dGlAY9f931bmyWiniIa45bsN1uef7s6aMbm0vmaJIpJ+9tYZSiUKJ1zJgRSXRiFA3xstgjqApOO3BVdtTbCZgpTLlDSwDN9fFHdcvgPFOdt/daIChDp9zfj6R5BFZV9dFu7IBHihE4O+cJfU9whd12NPXGvqekAprofSBITyCRyZa+UKn33hycoyaKKKkufEFMWbPdxvxYiMMedDwt3yCZcDqZOE0Tu92e1aojDLVOQ62hmTJB/KPnneeZw+FA1/ecnRnELQLB9yZ9FLy9Dm0EvMLCp2VBS8NK0ZOTvQEJgJw2FBv0rBVqrgABQtZCjOlIrakoItQZFTXEsfDYt6VFuTYy8CthZkRLpJQlrUopcjgcHhPvTmBE+7hulBoFkFwjyYxIRLzSUdEPV2xOpFJGQgfiFe8Kw6CUXkk+I8UvfQmq+5ViTrld6El7yMmE/Uqa6ZzgsZ9Lo6QIdKpsXMDpXG35HJebSx72e37jz/5jfPHp54RSmA97Zs3k0PP8w+8xV7j04f6B3W5kd/9AytFknqg9pGbfd7LyjM92ZO0CSwP2JPtaIoot7rZYLdXq+x7wpFRMN9jBNM10wSEukFJiv91aoa5wfn5G0UzJiSF0dCEQfAVYtMLXS0Z1nGh9E+a1OZa6Dk4g4pLbgNhR6KL9yY867sqyWZuTW7O+a0NyTQ9NtRBzxIlfNkrfHxncX3e9I5uFen/bjre3aRofFZqNxq2lAaiwoCSqNaIUvBR87R57V1E0Z4V6qfMnQZRCNi7W4ClDR/AdMtY0zbW5cKlNtUTXD2y3ysc/+5wffPvd+SZUAAAgAElEQVQpUpScRjqnXF6uGV9nijrrhudMEGwBxpF5P/HZzz5HBf7e9vd578lTUkp03cA2ZWan9OuBl/f3iAj9ZsXTy0tefPCCOE/86OMf41LBY3rMUjv7y6IrR/2BYxoGC4+y3mOWO1e4OD9nv9+aQktRAzjGGXwwlrI4JHhSjuwf9kzTxNl6g0qhCwHEeit+CARx1mStpFUtNud/RL0ea4WdFta2meTR5i/VW4Za+Je66y3omKlSm+QUpM7l2K5RsLknCyfVsawJYdgNmGeb6bcD4puVXeCd2SwnG6F+RlWZ50jXHQe8jL59mr++sWHE5lCap6H3Npddn9DyZnWLukfoOrq+x/fnXL34HuMuIGOEOgvivFX4ZmSaUe/x/ZqH/W4hEGqKeIGryzNudyMpC0mgt7KF7X7HNo+4bM1EOxETX778gu9++G0OD1umOJH7wG6e2U4m0NGLMIbIk80551eXuJ8a/XNwxg5GjXJiskaF1D5+hDTZ4ijSElWOotpOODvbME0HVKlIFcQ5kTnQo6xCz36/J8aJ3vWcnZ1xSgRzDmMnA40m1Dbq8acb7DyO44JEnaqC2qOOr+MphUXkOGtjG6ZSVioA0KgrWofwco6gjhB6tA7+ZWyoLniP9xDnmZwjXdcvIhat7vkmFvI7slnsMv+PisM7Z7lp53C+MwQnCUUyrbUoR3wHJ9Z38OIRTVVqNFRBijouDKBmjBPWZwxX7/HBn/k+w/qSz2/2jNMOyLa6smC32llqqIaqIcrZxTVudYmSCNnjiyeGDtwBMGHwVVacZB7yBMkkgmY1kmQoQldJg2NOzDlycXFOLsZUkJzpnDP51C5Y/0Pgoh9Q5xDxpJyIuY72SiVaViCgLPigLdbGpKYiQ94H1n2HlmQWEyXjnJLzRFEhZLh9dcA/eEKnDEPHul9bJMsGpjhvJkSL3IMYYyAXm2dvczQxRiMtapsrwlydu2qxXUmiKFVvDEoyFoGKqeSUAqXC7RZNU42kLTWzU8MAsUyqQ3BtrLzkwn5/QDUTgjAMvXHchGUz2uDZn16f5Zd81W6rCCoBFUdKhZUL5DkabUMKiKc4XQZ5jk1J+4T3Hq+e4K1xplTBAufBeXzoubi65sPv/hC5uObl7YHXH70kqzdveDFRNyngnBn8qDqKRgRTvRxj5m4XcbnQ50yPp+886jI5eUQCa81oGTmQCbmCocEOAFGDXXf7PWO0miaNB/phxfvrM3rv8c5x0ELvPfM0UlKmw0YPMg6vjqSWKjpnDTZfHLEkUmncLZBizU8nBjL0vdUWvXME53j+4j2++OIlV9fnS3MzpsRqfWGQvSZKUeY00YUenNK5gPc2K4/owrMqagvQ5lyqzwpCqIVzjPGEVcyyyNv35qLGZi5CyhDLREyZrIYIptxUZcqxXoUKYjhwVtjnUmzwLVszMqYZEeh6TyrK+LDDYeMLTWTvbQbB3o3NIorWcVbngo2wIotUqwiLBZtzDsll2SiG2oCS8A664Oilw2lZ8lDXdfh+w/WLD/nwO98H3/PRz17yxac/Nj8UhCKFWTNIPZnUmbILiiuOTCKIKRje39+wfXLFWd+RWTPnke18IJcJp2sURxBPnG2hKa6isbI4hrngTcNZFVwh3t/jx0TXr5D1Grca6EOAOZL2B4KC6Q3bwZCpRFFndYXHWTQsGL2xpp/GGrbHDl1XtYDtNL88O+db3/0W3/72hzin7HZb68tUGot3VRGnsg1UkzGCsdek8wEtPz+pqFgzseS8GEc1oKYhVs2zvhlNGyFSibH200qqBNMWIy31Ktka0lq129r6YQETxA6UkhmnCFroe1vmKVstWtSQuVxK7Zv5k57ML77ejc0CFSaEujNMsiiNj3JJ7xvHioqAGXFPoNqyVGy9qhc6p/TDiuff+jYXzz8k+RX/8OUN9w8HxtRRug09HY6C5oSXQtADqQS0BLLOVWfKkLFWLKeifP7ll3zrxXPiBOe9Z3Xm0fJgMyfYgi0p1YqyWsmJ4qqghAveLMSdo1sN+AJxf8/0cE90Quk6xA8GuWpmcKEKn5vLlRczDVW1vhPOROV8jTK2oBSPx6nVFV4dVB9FAG+rxnomJdMPAyK+zg7t6bpzg7c1m9KKWGpp9BE7okJwy8ncIkdJqZoLtdS3ol7eao8Fsapfy2rkWKtHTHsswzIioZpp7tDSDgmtTUY1eNvQQYFkh2RMBakytFmtYali07BZWTwsKcWE2k+oU7/oejc2i2GFOOeIYo7zEhwkaxrFmOyGNSDASbX0dov+LSpVA2tDWAfOry44u7iiH87Zzol/8LNXbKeMSAfFUjJHIaSRVY64kim+MIaZ1/s9qQzgdSH/mY9hhSdVub275/z8nKuhJ6x6vAPhFWjElUIoCZ8Tqy7ggewqalPTlqwWHc4vzokBtrc30HhdCUpOoDbTIt4h3lUyIJYOtk1SCr16RB1Jc9W9a4O+DdSwv0ArIqAidM4z7Q7c39ziVgHf15RV4Px8jfOe4BRytNkYcaDRXosCwa1orsOnCJxzjuKEOaaa/lVVmWT9o1SygZYVcjAlGkudSrVXLzVietdByYuPaGtc1srW/iZVwOgrORWm/Y7VMBC6wFwsgrjGDqisDOM81Of4YxAq343N0pqKy2JMON+bDKczl6misnjVszCNZQm7tonWvP/htzi7XrOdRz56fUdOI1k8OXgSHpcLARDZ4zWyIfFi7TgLjuLhLq7Y3r1ijFit4tvcuXV9ocoE4Ti7OKekA0rAiTeWbJnpXIekmbOhY5Iq8dogaGcpZTf05P0BzYU1gYcpsbnasH3Y43L15pJSkSx7UQ09PRa0vdhi64rBvH01nY2abcSgpS967DFYo9Ficppm5nFiNdiB0PUdmhPGpWuRwVv0yFVfS0oljnr2+z2bM6tHGrz/2LCoDpmpklMmSq5uXAL4qpeQK/pY/9/Ody/W02wLWssiIZsrMwCO8q37wwG0sF4POIWIiR+6ykK3RO0EdWsNyz/G9Y5sFkWcGe9obQKqCMVnCgkRO+Fjah3azoaa1E7D5ExFRbLn5c2OdPfAlDK+HwidWSBIDgQE0QnKgQ+GxPm6o3fK2kmVWVaedAOb3nGYk9HV1Zk6vXSQC16UVdeRpx3nHtZh4Ob2jrPLJzy9fs7dzZ6uJGZRtkmMmqIFXKaUSlBUiHFmWK2Y58Q27Skh8K1v/xoff/QR+3FmqilXEEvrVLV26xWnxd4wflOHYwje0gw13tlcTI0/q/WexG7c8lZKwRXhsDuwvjiraV2dWuwDSWxcm2Ri7X6o9aEbTNW+jIRgRXtDpHIV5e682eZlLUxzZE7JdANElgwi50KKxsZw2vS/au1ArWNUQHztwTRY3A4dVWMRp5SYpqk2RAOuqc5kWKuQcahUEKF28I+bpDY8sy7//7rrndkslmadGOI0cYWa9BrqI1WPyiPN0EfKApUKjpgEGVaErjXras2TDgSdWcnIplee9p7eZXMzLtXyOhe864x+Llie7Lyhc2o/y3lHHzr2h0KZR86uz/ijH79iNyfWqzVpI8T7PXscOQx0yeEkoeLoXM256ymvWohazNHLe370Bz9i06+4PDvjZr8lyhHAyCUhviqsRCrbgXqy2qlr9A81yo2rs3H5KLiBeChKKonQBRSIU0SK0lV51goqGpJYjp1+0cIwrJizpcS5gh852QIMoc2q1LQMS71SKbgukKN56JRcbPKywbT1XUonKpWVD2aazbJkE8dei5E0x3Ek52wmVWJWh62h4MWZ/rFGWruxKYdit6z+rq0B0TpRv/h6JzZLO0maVKq9GJlV6A3GdbZpXPD4oJTiF6ddqPtJbGC4qBAIBJ9JZYePHb1PnK8S513CjXsuut5khYqNE5eSWXUrDtOBqBNd3+MSiO9Mg0t60z8uE0UzLnSIeB62W549WfGt73zAH/7RTyllhZczsgTG0HMIBfpE0EIoyjpNuBIRZiTPBBQJVm9Qi8zdPCJFGdT4nIhab4VA1kRKLY2hpty1t6KFzvnq0GxpRnEGTjSvFFSXGQ678dbJjOPExfXGUp9U2rFuFYU7nrZzjPi+o2RjaDeWQ0u5TBDPo87oSojZ6RkKZQ3ikhNpEc5rAhTHmmSh8KsuETDXWZqW3k3TtAynDcNgfbSTJKt1mJRjJKolTgUHavZS4ee3mZKEd2SzNKDdXGiNeRzjTFif1e5twbuqd1VzVmMYHws0qVOTJU+UmAglctZFnrjI1SZQZIemA86JzXG42fS3KpkujpOlEMPAetXh97NJkiLHCK0ZLbNR/IswxUTxjourC1brni+/3FrDy3dkPMmDugGfFJ8yKh6XD5CTRZl1z+bsgmke8aUObpWMO8yE/UxPQ22sSdtpMPTmhJVbMB7UsFnjUeJhImCUj4SAOIpU/3pxaCvC1egoXoW4H0nTzHDWI75GqLpgm/yUYKPM8z5SNBG8LHw1MAG8orA/HGf4m4qLUC3Ftcq+SlOdbOr5lp4dncPk6MVDC/LW6NztdpRS2Gw2tnQWxkCtJ6von9Z+lMsY0iUsEbaoZS1aN+CRNvSrAh0vV6Nse2JUgk94r9YprryfXCVCrc8iFe3xKIXOT1wMwsUKBgfrvLVxXqck1GbtvUfLzDwfrEDuelMVcdZ8XPUrBhF8ybgpM8cd87RnPNziiVyfb+i95+5ux6vbHSmOXF5e8tlndzgfF7TF7JQCRcxLfu8FRyLNmZ7IXGaGTc/Zt54yZJjiCJ2w3kfO7ibSfqQAcy7s5wmXKmzrmvuuJZ/iBYbAerMhp9cQLcp2dTFkqdGm5v0FNfa/GrU9jiPTfs9w1oMzFnbRZOPbYkyIXIxksmiyFZNqSqp4FyokDCDkrMzzRAh5GbQCKNmcD2y2vtQJzEiOx3pnWQVq802uysce9ntKzlX9xZbt6XDa8WqIV90MzhPEm65oTX2linEcpy3/9Cclf2nXEgXVZlOOREZffQ4bd8dDI8TJggTWb/WUnFj1ytVG6dOBDR1RJkbNOO1QHJ2Hrgfn1iabM2c67wlV1EDJrDuPz4m0H8njwRT34w7VCZXEvkxsVpfErIyTcnl+yUH3eO85jAejuOMIueCLecEklFm8CV1Ua7qcZ14ftpxvAgWPHzq0EyQqq1BwXWHKGZKSpaFOJyegHLW2ihd0FXB9MHOibMCADUo1OLmRQ+s9K4qmjGZHnKKZuPYdWmk9gtQOtxXyWY0JVOqcUNGCD03186igU2qaY3rLJ2qeGmrKlhYIuI1Dn87htNO+aGGsAAKqDMOwbI7Hnj31drS1cPImJ18xxNRmlEq9l1YLP/YZ/UXXO7FZ4Kgg4oowFE8XC2l1ILNCxKSDtBQGD2m0iUO80EY4VI3lG+ZMnxKeyFSErEJMhd4Xhi5UxRTrpm82a6YwkXIEbwgcXlmVHf30BfPO9KdIM6HYfEzfBTaDR8vIfJgo83NyXKF0bM7Pme8eIHWIvyJLT5GCl0xfc2QVQboOzbPRSA4TOkZGnbjYXBI14h3gC64vyJhI8UDJdV69KJ1aSuXE4Yug4njYHhhTZhCxjV+y3U9vm0bEV6Zua5nXBVXAZ0eZE7f3d6yvzhh6o+NrAR1n+n5lZMSuW6wtUhK0OAY1oMAUPWGKM3a0O5MZEiHGOofkCjqNi2he0yFDhNCbaDhqIomo1UhgYEM39Ab6QFUVfTOinNQ7pdYrohRMCup4sFZGCFQZLPte4Bs3zDuyWY6oj9SCzJppCVHzUW+pra+cpnq/aGofUFOMbEebpUGFVEwKZ7Na17xdaqQWy/W7ga4rxJRsYKn2VFY9zFMmphEksRo8m82GYdUj4pimiJaZ8bBlvVpZzp7rLLeh+KTyxs+jEj5DICXIKTONI/d3d1xuNtzc3BBLhCicZ8+g5qp1sVnTFzHqyzgRCpQq4+QQkiq7w54y7bmUjqcGHVCkFbn2a7TOfYNQW6uqaGF/GJm0MObZrP68Pbt3PYdxajkvcBzvRRzpRKCuFeuN4NiuRluizs00pUgfAs55pmlaWOVtjNne54VC37623e1xIqxWq69Mm0SP8eT4yccRpn1XC0qNRvUrkYYpRoFo26WdGr4k+vpiukqupDamjpN1R/1aqFN3GUTUtIhFzNpNzbfFh0qZWdymzFptHG2OZIqZh+2eL7/8nFSUYehN/qhfUUpmOhxIKTJNs3WN44STghdhv93iJNAPDi3JBsn0qI5pmsEmeypikTLFyMPDA+N2h193JI0Q4dsX7+FzMUpKzmbEVOFVo9NUzEdtHn3Wgta+A65qcwnNHa4iQLqkPc1HHmfmTOMhMyt0lYi4Xq+svhjsNcpaTM1fTHhijjPBh8V46OgWzSN/xka5t0hSltdhTglNRo9xcqTmq5pbct/3xDgvr/U8z0td04T+Hq8gefTRm59bvta+7w0E7FeGSClYGoVzaI0IToTrs3Xl9lTUw45BnLMisv3drWh1dXis63pgJtV58WbUmVMmiOnnNsGDopDmRNevuX94YDuNjONM1zku1xu6vielyDyN7HY7pmmmlNp86wLBOeI8kYtwfr5h+7Ajpz3iPA5zUC6+/ZUNqqwLVQ221pgBzyEnskbCHEmrS3rnyGS8wrrvcb1jN03mYpZj3QCWYuRK4JgUophWZOsaFI6wrFAZCUVNvbMuXlvAoFFxvuBjYrUKTHM8GhnV53G1YE85M40z6/V6oarYUNfJhizlkXK+WRbabE6j7Ku21OpoUJVSpNlLNFUYEY+T1l6wA7GUKkxSi1ibrWk1S005OW6Gb4oeX3e9E5ul60Lt4OdazEeCdwxeySWi+Co7enq9GWrtVCtVEMKKXwwupaLTxTwOk4CEQCyFm5s7clZ86Opck0Ge5+fn5JjZ3j0Yrp8i85TwvrN5mGp1HVyH5sJmveGHP/geP/3kZ7y+eY3mDsoKJ71pC0gbffaIGH2nnYEpJ4Nmi5Axu+mUI2G1Zo3DB+jUITExW5fmRPVEbdS8WGPvIHCvkQvx9JiARqqGqIiBDadiH1Dtr8nElBGXmcRYw/Nsml3iPC645We2CNBMbedWhEOlz9tbjHHZLM1D0jljXRRVYsmkOBEy9FWj7Mg0N7ClUfFLsfdmtGo0Hq2HDVQz2q9Afx+NWJ9A0/8o1zuxWbx3PH16xd3NLZV3ikihxNkKYud4vFceYx32qVakGd5fcjZBOm/OXdL3KLA7HECEMUd2h5GclWFYG/s39HRDzxdffMnrV69NUkmNmqFA8B3O2Zx5520ozUugCz3eCaEPPH92zc3tF6YYWTKuRhWtKaOrai3eBXL1k0Te7BcYo3aOM/OUmKMyq2eaY3Uho6JVLD2EOqJGdMKezFo8a3VEMagZsDS22CI/FryVTQDWkyk2nX04TMRoUG0/2CwJVdjBiU0/htAhWKe9VNXJUpS+81ZTFmOSp2RgQynVtRgTH5liJHTBoOk6dqG0fS2LQdLSo6yqM6I2+wKcjBQcV8bpe+eMiZBSWlbMm4ZKbxtt3onNklPigyfPkKjczjfMKnY65QkfVtbFRxdhCJXJ6vBaA5hQhEdVKBrJ2oNb4UPV0VUYCxzGmcN+wkK7EsJA8FZPjPNMKAWngfGQiNFOIe/sJBMcPjgT1mujAs7R9Z7zs4FcZXecdFxt3mN7ryRjddUC05FdwqkjyIaC+bMrE4OYtGnSZL6SIszeG6QdHKJGxOycI4wjQSrNXa1/k8X85ktWtDiigjbqPFVAsG4Km5NXEDFPFxHSnCAIXgqusoDVBYqzIaycjH/W9XUeBovQNlPTorgnRpuO3O+jgTGhx4kRJI1ZfKrUIgwy4G3iDmhmUnUXO2fyS0sKDkt96pzVsFTRvmXmBVr/3oybBJw1e4seDXyNlOkeRaElSn/N9U5sllIKh92eD168T54j43aL1pzWq1a7gvoHPdKCqjpfokgpuFJMKqhA6DvmMjNv94z7qXKKoO9XxhdDSMlkXUMVXxBRDoeReZ6P6IiYLrIXh/NG32iqKA5YDR5xpkTysD3ghxWrywu2h4muWxFbLi+nWYKztC+bkgxO8J23E7BYnXKz2xOfPaNTwZFJc2SKiQyLhR0FxHuSznU0yk7sOSlJTEI2qyGCWQsq/hihG+8DazSWuqmbC5rmgquro+RCEWGeDBUTUfueYj0xEV/7Fa56tphHpy9GwfE+QEm2oYsuhXpDJJHHDUbLLJV8Smk6SZ3aoj5NRRUlVeuJ5Wvtd28DZycSrqcbo6V9vxIz+ILwcH9P6Do+/PADdg83aBop6ozrZA+q6cKJgFst8sWxmBmVomwPkTJNHOKenEq1a+ggGJvYOesBeF9dbNUm8B7u77m7HUkpsVqtlptXssHPBhQ0Vyo7RW9vHlDXMabCzW5kLiPb7YiGDc1CTjXXOZTaWRZvC9dbRMmVxpEpqDPaz+vDni+nxCZBmiL7aWLMhTkXJq+kVnCjTCmScsKsLq1bXaS+ZV02aVuIRxVPqiysI2uiiCWBpapmpmj2g269MdZEFcoIwdDEppDinDG7S9GqvaU1mmRaI6zZpLdFeer+dfSMfCyR1FA1qZGrpattYzVF/qY2WUpZap6mAaac2O6Rl+9/0+flbeqYd2Oz1CbR9uGe9957wne++20+++mP6fsBqvRpqfSHBnW0kdTGCZJW4OO5edjju1It3jp88CZHWgyHAW9sYy2M44weEtN4YJ4nnPSsVyt7TipvqA78l9MXEEcunt1emHVmO2YOSUgKykDTZ24t8xalAMQHoEOyx4tZAZpSJdY4BPap8JObG379+j2cdwxDh6qQ54jThDbKu9io7iJQh9p4g7DUe75CyGg9ybV2yMl2wOSMdg4T87SIHiqSVUphlhH63qYunbOemJhXjh1cR18UYNHfagqWLZ11tVY4VXdpP+O0IdgWP3qMQoWj/nL7/pTS8UCrQIJztonneTZhc3fswT3qx53Ia7XPfdP1VptFRH4MPGDTnklVf0tEngL/HfBrwI+Bv6qqN2I//W8AfwnYA/+Gqv7e1z4/0AdPzInt9p6nTy5J03sMZPrhjPv9jFIblfK4qWTKK5a/p9aAKzUiFSvuvIjZzamat7tgU3txrt6VNm8e/KqmFvb8DXp03lFco3SUqiTjUDz3hxkmj8qA82uCiI0j40FPZilUF1OfIg5tcUZNAEIDVq+oRZ8s8Gq35YcvPmBAiWNiLmrgAh3OdQz9QHGOmzgypiYIaKnXGGc26zXWiDnpX7VhKDl+KaNICPa71gq7qOKqKk5b/H3fL03F1bAihK4Oex0X2zRNJ1Cvpc/e+6oxLCcRTh8p37cU7JTO0hjSqloljyzytN+jfW9bRO3xfd8vXytVZabVPF8VQN4WHftmu6Pj9edV9Z9W1d+qH/+HwN9W1R8Cf7t+DPAvAz+sb/828J9/81NbfPBOiNNEjDMfvHif1Wqz3NxSbBjJ0rAjYtJOazspjyohKetCEck52skmjjzN7O7v2O3uOIxbVPMiYh2cZwiVs1uHphR7UX3oaopjTpKZQHEB9QF1bfFbwRwk4I2pWBvfcsTupC2YirCqjf52ztNVQ9TTvyn0HS9ePOP5sysuL9acn605GwaGqv4Y55luUZoHoeC8cJgnomacFxvLETl56se9B3GOubk9nyzYJUWqkkWlddej9VfSnOh8Z1419TXU2kBcooXI8rNO0UsRYZ5NI20RIjl5bBORON08jR84z/NXiuKdFumCEFrz+fiIryzkH40GfM31J0nD/grw2/X//xWmrv/X6uf/a7Wf/HdF5FpEPlTVT3/RE+V6U51Wfa39yPn1FevzK7589QVKwonHFY/XgCO3M4plv9dTrAlQ55xRVygUmwefRkpK5CmaJteqcLYaWA1rE5nwzubtM2z3Ww4xk1UoOGJxpOIodBTXgVuB63E0pROpMyQGfxZR40GJYiO9wRA16UAS0GRJ2/wJgOK7emjEzHefPeO7g+fF1YpQRq4vheHigoe9cHu/52baE3Nmnqcl/aRkgkwk8Rx8YDtOvHfWP+aGidFInAriAi44ZtE6p17JibQ093j6B+eNzqMWccVZD2yOhiyVpbawkWXxbrGjK9lg5bbAT6MIHKn5IYRFYK+lVMcFbNHOZl+OmsVL7dFOII6HQFlmcuwxOR8drf9R+i1vu1kU+J/EbLX+CzWLu/dPNsBnwPv1/4unZL2a3+SjzSInnpLOB/bjjtXQoyj76cBZ2rAKnu3hgCK4ruLpUPH7mi6dNGBaqDWOlpLniZwicZ4Ygic4x9MnFwxd4LwflpM8p0jorGcwzYnN2YYyDdzvErH0qAwUehO58B0s1BtLLNosjb2ggpBr5DNnAFoUrL+f4qxuKT1oj5aRjCClYwM82wT+/J/7Ad9ZjayKQ+aO/ah8cZ/Yx8J+f2/9GecoacZ3NhadKyqkqnTeEYLj+fMX7LZ7Hh72C1Ai/jiSrdi4snG1HCVVdkLoHhXHZnRkvpIiQqw9l1htJk7rgJwTvriF4iL6mNXbao22Kdr3tkhzGtlO5/K9rzoAi0fl42hwipK19Ox0w725Odrv9Mu0yQP4F1T1ExF5AfzPIvL3Tr+oqirycy32r730xFOy63p99cVL3v/wfXywP3R/2OM2a4bNhsN4WDB0cXbTfA0jFl9a8+qY7qRpQohc9j3dZsOqD/SdMHQekcKgoHkm9J7V9cYE3FSYFfYPI3fbQtQNRTaIX9WoUNEsKlsEK6JpSjNYGqSacVpss7hj+pCLMXRtTiNYL0Mt7VMfcNnTTxNnukNff4J/tubq/JrVxcCYVvTnQrgtpL7n4y9fMqVM5x1RlCF49nN1OPZNOkrxqrz/3ns8uXrKw3bHnBOhD6Q5M8fIVCJ53oMzNNHX+fmWGuVSTP3SqkZT+nSOmLN5xHjPlGxqMXQWGbTWD0CNNj9Pq38z3XtzsVrH3/6/wMq1NmqE0KVe4auh5dPrzWh2irq97VmpoRsAACAASURBVPVWm0VVP6nvX4rI38RMjD5v6ZWIfAi8rA9vnpLtOvWb/EXPz+7+li9d4YMPP0S843A4mD5t6ICxCsWZvnDw9USvJ6NUdIyG+uTC1fkZF+sL1l1YHI+dmpiBAyTA9dWFaXb1ax52M5+/vOWzVztS9uAvEFZARxGHSDmm3GKqIZanO4Ta7CMhEhFJXFys2WzWbHcP7LYjogEtvgpyaG2g2mizV0dEyfOBHzy75p/7/jPeP4f9feR1PPD02SWseiiF209vGefMs+fP2R4OhGFFmnb0pTAlT6oqNFoKaCLozLydyBoI1ikkJ7MzF+cQ5+llMNJpZ/fbNKVNCKKUUoUA7W6XYsmmc44UI0OVHXLUtEhMUPBRzXFygp9STr6KgnLK3yqn8lct7fKV1wZfCf+2n9G+/os240K9+WVuFhE5A5yqPtT//0XgP+LoHfkf8/Oekv+uiPy3wD8L3H1dvQI1MSmZ3d0949UV5xfnOKDEwhA65maaqRVVaqiGWiPxlOIgWJPx6nzD4CYckaIzwRniNfSdWQwEhwxr9hle/eyeTz57YI4BdddI6FA60KrzJUZ0fHQpOCk2YqyCdwq6x/uZq+szYrwl54D3Ee8iOUWc9gsypuYdYYtxhoPODDrxa9/6Pt97fs15iHDhyEmZYuLlq3t2ecVPf/aKbYTL589sqKwoMSZDr1zTFbCe1DAEnl4OpHHmYZ+YY0HV0WQdLC0TXAiEqteGKilGK6JjqqjUsTh3UmVxtY0IANlQtAYR910wbbSUvnIT2I85RhZ3gnq1xzYOWYPpHw17naz7NyPEV/G/TjfP6fe1Ps3bXm8TWd4H/mZ90gD8N6r6uyLyvwP/vYj8W8BHwF+tj/8dDDb+EQYd/5vf9AMEE307uzgnjSNsVgbvpkgIDi/WuHO1yw5UcXxrni29lpN/Sk7EeYeTVEmAwtlmwzCs6PsV21T4Bx+95Ob+wJwHVC5w/mxpfNlKOB1n9ksLvqVYTjOdFCBDmkFGYOZ8c8HnLx+IEVarDX3v2KeML9mmJJ3icu0jFIHsKRIJkon3N7z+MiLXA+9dn+MZuL078HA7syWQXODy+SVjihxi5OFwYEp1stQLSEBcwGvmxfUF719f4BFu7kc+v92zm4VxVuYykiior9wyEVJOS/0SoxXjXRcoJ81BFPJch7JCWLQLfNV4894iSTlpRp4ux7YRLFq0TXCsd04h57YBnTPwoahWq4BTRZbjKoLHhfubvZRHw10tpauzOccj9xdfb+NW/EfAb3zF518Bf+ErPq/Av/ONP/n0EmF9eU6/6ikaGcctZ2dnaHFATwjephK9kfBMVcEE44pmBL/MRNjJbRTvTedZn52ZQouD8TAxxshuv+XjVw/MGbrhDNetKeLJzPSls1poiVgmfkA90JwURGcckfNVx/XZmv3hju3+HtWMJjhsR/JcB5jmA2HYoJIomol4MkqviRJnEkIfApcq/ONPn/Bi5XlyeUbplE9eveb51QdIOCcy8Wo6cP7tp2wfDiSU7ThyP49EKYxxJOWISEfQjivv+Cc/fMZ154gpcXkm4Nb87NWe3XakSESBrltTgO3hgVkT6t2xPigWNRV9dGIvRXntj3Rdt9QRrXhvby19spe5RqeaKhmc7TDi7LF+0Rol0SNlX6kHQo02zUKwsZJbO+Er1uPP1SvAMpbeIv3bXO9EBx+Bfh3MykAgayRmIzyGPlTxOCW4xy8csECEqCLV6LOoElYbNhcX2B0P3D5s+fL1nt0hUYpnygHnA96v0eYOhgIJtEO0t5JWEhBxacK7ulmIeJe5OLvk7NJRxLE7HBdEjDMpxtoUUw5zphDI3k5HiYUyR3IeETdz7iL/zIcv+Bd/8AHXa+Ws73FF2G/WfHJzy93k+H8+/Zg8rOjLGRlhN448THtmKYyaiHMkIPRecWnmauV5f7PhbIC08oQs9BuheMdqPXB7iIxJyV2whs/4YHZxcmzcKcci+k00awEAKh+rIVttccMRZTrt1LfUx1ydqc2mI4J1RLjcEslOn8ty7YaGNkZGJXR+3RJ7s2apnf2jQs03X+/EZhEK5wGG1bri63aMm35tZL/bMs0R47t/Beqhhkppzpydn3O2umZ7uCP4jnmemObMboyWbvUX5OKQmK2b77qlMYgUksugAUrN6jUS3MTlMOODkPJESiOCMvQb+iGzSo7N2Yr97oAgTFMVNEcoOTOlRNaAX69BPTrNzNMekRHPyA9eXPEX/4lf48NupAwZJ0rIngS40PPJpy/Zq7LpBkouzKlwiBOHHNnFA0kUrS7JwRfO+o6LVcdPf/IP+Wi/oz9b41cD0m8IfsOm7zlMSpbM/f0DU3Cs1mt29yOSS+0ZPaaEtL5H64o3EfBTmkvbQKfcr+Psi9nwee/r95rlt4lX+J+rWU6boo+tvFur99jo/KrA8FV1yvF7lmUDNP2zXxHW8brv+eG33ielxHa7JUdTiNRe0Hk22VQsry56zHupxDitMJhZrim7w4EcE2OcK0lvYFZPFm8w2P/f3rnFWJZkZ/lbEbH3PpfMrMyqvkxfxnPBGLCQb0JgA0IICQlZiCc/GCHhB57gBcQDmhESEo/wgAAJySDBGxeDQMKyhCxjG8QDGhtjexjPMMyMsTx9remursrMc9l7R8TiYUXsszOrerqNuquypVxSKc/Z59Q5cXbEiliXf/0rOJpAYXMBoze1CFV0GUePkwGXR7omcrpuOGnMXEjquNwqwxDJcc/lxUjbLrl3doamzH6/p99HNBU29zHSJ0gEOr8naGDod+S8p8kbXuiEP/7ZlzhrMuQRF+ue4JAhEnLAa8t6dYdxTOCU/Rh5tL1kO/aWCyns303rOT5qubNacm+95oXnT/G9MmZ4tL3k4XuXXO4uGHNgkMBujKQYDbAq1jUt+EqZhEF9QpjalV9dwKZEtWtWNbcOvR8PlZJ1gaaYr+RickEYODlgxubNUSkRtpqnMq5mrLpUSwL0u5heh885yPy6IXvs3hlJ/yeCsEK5ePiA/X4/22EcuGi8T0CfMkGMjytRjmXnpg69VyaPTMpCcgFRGLY9QgsuWPjZMmul6Y7Bwa0kVfERWj9w3GWOm8zKZ5wMJWxpExQcZN8AjvV6Tb83mPpisaBtA+cXG3bbkXEYCtgz2GIcBhrv2GkiusQyR37g5c/wh+7eIUlk4wNdFFyCXkb248h+n8hDxuEZMVTAg/OHXGw2RksqEBTWqxVnJ0vaJuNy5GjR0TYty27FqEpYr1inxOVe6Ue4GJX9O++ig9J4M8U6X/i4yudak6SrjnP1V+qia5rmCrarniSVZG+uAObPSOlKnQ1AikUpVR83lWwd1OQzlohFy5wLaMnpTA1cDzI/nR7/TAMymVuf8SU87Z+keTO5EcqSUuJyuzm0VlaLcLkcQVtb2IlCRGHt8A7tDswwm+8YznnGPJLHsluoAQi9WeGWZ0l2IiU1hK5IpvFw6iPLBtadsBDFleY5MVgRWEJpGkMtt00gjumQfRZhtT4GCcQxEwdDBzunSGWz9K31lnTCcef5wc+8TMiRTUxEUbIGUo5sNHHZj7yzz+xEuBwGBg/7/WC1Ltla5LXBc7o+5s6dY1rJkCMhOM7P3+Nb777LvbO7DAoSAtK0hKYjiRLAyq414qQhxhHNthFJJZEQmTajuuRCCFNmvvoplPtfzbHgQzGdZIKnhBBsHqgt2kfMBKrhXqb5m5tkNSIGhTZJKfk2R+XGnlta15Of8+sm1SGzkgEnVpfU+sB3V5UboizzHWseOgyu3jxjsqdMgHO1KdDcdjWZbrYlDaZ8gpH3FZMgG+YLBS+ZzitHnXDcORpNiCYa8WhhTMGVMKdmUo60nYEq9/2OFhjGiCL0/cB+iHRtx2KxtDLg7a6gCxJZe1IKLLxDNPLycyfcWQqXsbeyXecYnaPPwmWCB9Hx9mbHO7s9m2j9Yd597yG70bqcrduGs+NjjparEi0y3rUgsOwaXjw94fTOHR5utlxs91xebOljRnHQrVl2njuyZmwCDx5cEsvvrRusRf8qLOZwf6/DR67Xp6SC9E0F9gOUXvOhRM2sVbhVvlmNzZy5cr4u5nPqCqDT8m02pzVgYOPisdPkyacVJVGa8eIJOII63Aeoy41QlooBUq0OmZbkl2cskPicU4GXHzK6VSYeq9nz+rlSTAtxVuVIuaHZZ7zLvHz3mFfvrnG7h4ybc8aSsXY5FmfSvjP4gDqII0YCgSOSISYUIcbMcrWicoq1ixX32o6333rLiqQAzSNjuqRtWs4WjldfPGM7XNB2jTUPyg5Nnl1S3tlH3rxIvP2o56JPDCL0456L7QanymrZcffsmKYw4viSqwpBOWoDa4TnT08REU5WS1bLFSdD5NHljovNlkeXl+DMdIya2I8DyQmN97Nd/cALMAcgzgGR9RowLdwp1Cvhii+DJksGF4Uxt+hwClTQ5hxnNsdtTZ0VOChFNf2uF3TV54/DaMayHsz8c97oaj+M3AhlAcN7wdw2rj/C0yfbCSqKdZISW59P2mNFPULJthsDMZpxDo6XkaNFw711ZkGPBGOKDC6y7yONb+njgG+MTGHsI+oxPyIrfVKWizV5NBKGtmlLG4QdE4ZXE/funXH+6CF939OKsGoDq0XD6dGS1sN3NhcMLDlaHdFkRxqUt7Y9v3Ox4a3zxH7IJKyr1/nlBQD3Tk9YrzuCB18Qw3YKQOOFFcr3vfQSjcCYxtLfBRonnKwXluxdrdikxIP9jiGOjDkiTTvdu/li9N4aDyl6mINqNk0lu7bZNa3lqcwfoTDhBCO1IKGxRqlMCb1vjCQjF8IKyxBO81eA/1OdUfVP5kpV537uS70vOFJsI3belQ1ZSgv34gd9F7kRymLK4SdFcCI0oS2EAwGv2RKF6JXohxHlWV5lmrxr8AdNyf5PVkKAroW7pyfcXVl6sHE9wTkG59iqICkiTWDIycCCbYsEz34/sNv1XPZ7tv1opcR75fnnnmPY7Rhiwmkq/RLNcW1DwIWGRo6JQ0cQYbHo8GR8Gnjw3jnt3RMuNwPjo/ssw4o0CG+eb3l7u2c7lrxRGrm4fESWzCsvvcgqNOQ84H3t8GzmV8pKlsQLJ3dYIZAjzLpAB28lzatlx2Y/4gqyOGcreXAcFlldiDU87GqYtpi207rS2RJTJcdku3YwC0FLy+267KVYD4KU1EA8bG4iE4jcyyGhed0809n8vp+ZddgwTdnsbVY8V0lHRCBIrdo85HTeT26Esjjv6BZG01mPXicOlzw4Z8DJmiwTrp4ceiCDuG6a1de9ZJat4846cHbcsVp6NFoyrfVmHuUcSbknamFBESGJ53JrWf93Ly4YkzXnUQn4YP3oN9s9tYd6X6J5RlAeaJyFdY9P1nh3ROpHxmhhZcnCZpf4v985Z9U2uEXL2G+JfWYzJDZl4aehJ+63rBcNx3dObJI1FX/ONhE7On1pWppYNg0hJ0xlC80RUuiDPN2iJfU73rj/Jr2INRwCuHYqXzeL5r5Jlbl/UBOS1qyoVFDizIQu5Bo1f1O+rphfV82q+RzOrYW5XDfFr+dpro6Rae2E4IuylCBBtrSBd558TSmvy41QFkEITeWutaadKSbII0lTKRPOWMenAzzCykUP/UNQCyzn3OK94CXS+JGTdcciCA0jIQs6ZBrvUB/MVi80QjElW1AijCmz73suLzfsh5HBGhQiYpEe1WiZZAdNsD4u6g12c3K8xIsSvCcEATLBY37HxQBkcvGzYlQ2w4b+vUco3qJ+KgzDSBwyTRCef+6M0FS/YSDnccJGVfI5BAJK5wJd6KxZExAKaVhSJahxBOz6gbffvc9l3+MWK1I5OZzAqmtxztEPfTkVrFyZAp5MJQt/iEJePc1ts7D8Sc4Z8UoILWNMjHHEzxRu3gzJOTflbOYZ/zl+yyJsZY04C/bkko9BD9ev+FKFIcaJATyb4PDOyPuEkslXRYngPgF5lgJuKP3JS+PRSsxGJmeHd9aVylV4fk1MSqWDt13UeKLMtg4dnB4FWhdpRGmdM1NpzJCgaTyIsN0PpARjhDFaL5TNvmc/9IX8zU8UprlkjFtnAMOL84fcOT62rlgoq+WKRTCSCJvkjDhrc+cChOCsZVzhBgCjbco4Li/2E+N80zScnqxZrhaIZFSygTrLb6wkEVomPaJGgh48eE+UAkxM1vXLqFI9PfDb77zDdhxR5yE09P2GjLJeLlitOuMtcFqgLMJ+6AEm59rCTsUkm4Xxq0HmSluHMRkaIcaIE0fougkGZKeUPKZocPXUOPhQTBvk4fQpvporJhyFBYZDjkYxhWhDQ9c0BG/IikqhVdefUWF9EnwWwBfmfAqvVE5WlxHtkh3xKZqiOEFyJRcymeDcIvggpbvugBdHkMyisUpJo+2xDHJMCuLIeB5dXHK56dn0A1GNJytpsABB1inDbwMWxgQtwslygdfIetXQNd5OFJcJJQeQMPyR5dASwdmSj2m03iaYne8Qzk5Pycl6y4tgvAFOJsIISoDCWmNr3UytxkMobI9iBWfkwr1VofcwJuVhHHknJXYquKYjdAvG84sSLRQ02Xc5Uetbn2DRNozl9M2p0ONqmYdCLmw+h7Hf5JwJzpdTRAzsKlDZYOAQjHlSUGbuK03zWzjHQmlRaPkzRVxBgDuPdwHn3ZWUgpYuX955vDOeB8EVC6Sa3I+bdU+Sm6EsCnmMpbmqbVxZrW9hljKJOVkDVGHiCbaISvFXSh5GtbCA2DJl2A80rbGzKKAixqTvAjEn+n7kYrPjnYfn7HYjyXmSSEEdW7mwkEFH6jQ4HC4OdNJyslzQNoFFG0ATOceS4LK+JClFQmslBuSMFpaS4Iui5GTjyoq6TG2oaqDBaO2tNUNSphp5qTkJmSJIkq0EgAia6i5pC8Na5WXGDPsY2Q4Z9Q2+XXC+2bLZblmuO1bLDkdExKD2Ih5ypnWBppQVj6OBFyuVKpIOi3o6eSqBSKkaFWMEzPngmzRNM5ld0yb3WAi3zq6dDl4cofE4Kewx5qUhzPjISqeFKSo2gWTtZC5suWQ1pkznSiXnzJd6P7kRygJ2E8dhsIQWhcNWM85bj3kBUooWupRq61b+qlm5KnYjfFl0VmQVGKM5dxnPbh/Zb3v6sWeIkfPtlu0wGl1pjlY8VbLEombLI4LkTNDEqmt44e4ZJ3eOGPNIF4TGC8F3DIOQCk2qogTnCDgkGTSEaM491Mx1LtOZCdW0LOZWzjV34Yw7uawdEcNZzRG9CuQ0cr7d89Z77/Hy2V0a1zACl+PIeT9yvul5ZzvgXQdOiDlxeXFBE4ST1QLRsQQNLHjhvaMNVgodnBF3exlL5r4oo6u5lINznnFs9735AllRsflpwgLXhGm+r7e7q056LWs+KIuyXi85uXNSTigAZdjv2FycI7XWSBSk0rSauHr8li5jGQF11imgtuOhFhR+Ak4WRYlqtd4W3XI472lcS58iYzKEaxoN4uF8QJ3Y8Vscz3nYzxCtlnSyyWxQzbz3cEM/jNYIVYVh2DPksTj1JfOstmEaEvlQz4Fklm3gueMjnr+z5mTZkiWxSVYt6RScOjSCBFM67wPEROoHJOfCR5xKpWH55eLNDWlqWwYzDXJOkAvspBDjoYewac4G86hJuSRAgAF4/eKCyzHR+g7nFzzo97xx/oAxC01YQgikcWC737HbbTg6XtIUhbfolYWrt/2A98HMz2L6xDQyjqZwgsNLU0LCM6C7Whj6KlCmehCHyFX9WwGwVwGQTPcDKNS5FD+jzFOleKp8bDXowOGQM1MlgxTiEOO6Kb7kvHqz/s/3lxuhLIBFkzA8kvNGrZPGkdjvAIdTj9WdNLhUklQcykirSWI7ckYkkJInjoltzKRxJKXImNNkr4pA1lDyIuZv5DJxYAR4gtIGxwtna+6uVqxbj3cZ8YnlYoEMFrnLw5ZBwIvgM0gu4UjFyDBQZFRcFtvVkyF+q5g5RfldJdyrmTgalqruvDVbXZO49fd7NZb/qJ69X5K1QcfEOG7oM+y0mdpsDOOO/aZnt9uyXi1Ydu3kk2k251dEcJLQHMuYhL6PBN/Qus7mI1swYiLqKzt6UvAC+OKQl9/YOrVIlE34TOSQR3OeFz/1Ke7de25y0sGsgtAENGuJYMHm8tz8ybrx6CGyVimy7L5mcj01iyEt0j1BNz4ByqKqDCmak56SAftGI8I2krtA43zlILVWaJUOZ5qKQ3YspUQXWmKEzX7HNkUj9hZn7bjFTCJr4gMpu4m9UsRSb6KZNjhOjtYcHy1ZBmidQ3K2VhF9ZEgFKl5yK6o69V3MSYlDQrQ0UioE4ZTQqhbnrEaEaucsW5eFG0ul2NYHW7r+2nm/E184CizX5Hn30XlpLeiI4ohJ6IfIEHfsh72BJmNmtVqyXC6sJZ5WutVyX/Pc8bbXmibQNh2qmeCtp4GmbMpS2lY4qLbNYa+uUT/vJmLuuUjBn1W2ntOzU15++WXq2VR/by06mz5bMxfn509QFs+8BsaUxXOA4P/eiCqq3Ahlyars4oBGS47FEh3yNd6e7Hoa+8KTVdDJAhQTCT3E4Ck3PudITAmH0mA2Pd4ZCR9m9zPtppU1xDjGjldL7qw7Fo3HScI7o31VsTZ3qR9L62xPLEmHRbcwk6gUOql60lAbllqUyYjeZjtgOVJyPjQHMvNMcTN+rPpXZjmIuigqyLMGQq1HZM9ms2EcLSDiXCCLRYGaLnB0fMxytUQ1UXkN6gk979hVldF6sJRaG4xvzYkDX0odkPffl4uJ9iTIPFD8z8NGoLlaBzp7z1U2Fvu86/xxk+11JUFZI6X1903Ru9+j3AhlqdK2LTlGSIa3wslESOFFrS89iZzNM7NIhnFbgeVWVGpfFTdxWCGlF3w5hVNKBQsEks0Z96Wd+GrRcXZyxKoLZjaU66nc/FQ+JPiGGBOLRWsNRVM+tKd2FppGLZ+iZeKtFYOJVVKoJV9VjXHTuSmLfJjYQ1iz8gyH0BJCrW0vzrXFms2fUcU3Lcd3GlJUOy3Eoc4hTqe6nJwtemfhXTvlgq+w99nCtEQEkIixx5daHtsEElFTqVGZicgVJUGuAmDrZx+QFhSfYv6+q4p1/f9eFZkUquZlZq/MfKTD9ffL+L+f3Bhl6VwpKqKeDVoUxUhSgziCKKQIPjDtIhXuwcEkSzlOp45ihCA5xeKEF64vJ+Q4oikSyNw5XnC0WtKWjHwQq/l3WgMIGfFuaorjnSOOme1mgyB0XWcwFrPjpp6IZgIUtKwc9t9Y683RiXD6al7hqq8y1Y8UFHU1SaYFRIm5a907y+JvAxSopZE0JFRSgaNXCL1Fg7x7fDnMgYkh1MhjsfvVwr0uWR1Mnb+qKAcw68Fpf5LYfSibV8nMH6JeV8dxVVHkEPmSg+lYE5OH9+u1z3kyLdMHyY1QFgFctZGVqTGPRVVKCFGVrg2slh2DOuJYdmzmN0MPJ0dVnGSJPMmHheScRzTTBM9iGThZtXTBKiUDln1uCtI2YU63mybG4vI5FXYSNydpqIDAPIXCcyV5nznkY/Fvigf22EKQEuGZLxg39SJxpZZj3lgJtCZy62cUj0FK9Mg8sZrAs9dtYc2a+JQT4Ipo8eMqWqKc4JR6IHGCp/ZOmc5CukWLbwoLTPkoT62erx+tU2i8OvjiHDGOXF5ewmxu69BE3HRTQvDcu3dvMsNyUpoQaDuL1JWbiebEftjO4l213Uj/QT79FbkRygLYj9VSklrs10qTkzRB03F25xTXNrATNA9ojkSNJJL1YlFB1eOcknU002Ck0CcpeGg0cRw8R0eBo9USIaMx4ZECprNJ3Jfe7HasB+DAn5Wh+ArVZAgTMta7wBgHUsq0vqVtPLthYIgWhhbXFPtfLZKTlVhonB0OsiGDUU/WkeVyifee/X5vE68UdLARdNTF7bA1VCmh5nXyUEPhIMlOBBXFlwZNtqAsDyH1FKwh3SJTzZG1Gyv5E2uTEVOmaZfG/4yxdx4fH5kBQOFIULHN40qNvQVafCjtBOv1NNJvL2qQrHoZiDdgrS8naAie07MzcsmvGWFHYL1eH5ZViSDuS2uRyjimsecybIu/KUCeul2/n9wIZRGY9dKwyTV4S0lYeUe76PDLBUkcro3oOILLiDNFcJppG48PHc4LmqP9eDF/pFXlpF1w92TN6dGawEgcR2PiKYsia2azNWaWWrexWCxoQoNINX1KgLpE5kJw5ouoliBAsZkzqLNOvmBOsGYtbRvMmZcCt/AUxvgyVymVZqEF6jKWbsC1meiUhHVyqO9RnUglri/y+tfVxF95f/Un6oKkmHtz826y80v+CxFSxviOYy4dt+oslg1rlsm3BX+VbOh67cnhex6PbE5PXamTb1ru3XuOsR+43Fzywsuvol546eVXEIT//dWv8vzLr7Bar9jv92w3W8Z+4NXPfZ63Xn+D/W7Hp1/9NEfrFfuhp2lbfuVL/91SFB9wytwIZVGYSA9gHv4DSYIEq3m3xZHpVg4XOrabEfWOkM2HaHwgqy1e8Z69bBAdWQXh1dO7PHeyxrlMHzd4FchWqhtV6ceRIY6gUsKkRpE0jiNt0xKCY7PZsVwuJ27lah9rCWXHaPX2qmbqDcNoYVTvSiNRrK+hlGSjM+c7xWRWTc0fuVLSXDBSVzLcoled1GsQjeuLcB6BqmFX40Eu5lXRFMurSE1PzBziikEz0xMRS7YqDH1PH42sw/6PzeY1V/+J8kE+wsG9PwQ6nPf84A/9MMdnd3Ei/Pa3fpt7LzxPWHTstlt22x3L4xP+8A/9cNmQEt+5/x2C97zy6qt85vPfy/233sJ5z8Wjcx48vOB7v/f34ZuOsd9/4JhvhLJUx7Q6hULl1BWyFIxRGvGaUPG0XcNquaRtIl1vnGApq7V7cA0uC2O/J8eBF45XvHT3hBWCjz2ZEcnRejpSJiVnxjiSkyUShxopogAACLdJREFUg69xf2MiiSmiOdK0jZ1aegD6pZQQXFF2s4VrgZTzAcXaM4w5QbYF6dTsi4wSSw8XAygewqgHR/cqwDClREYnc2tSpBLybZpmet91MOKcMG9e7zM1Q5KK/j5QG5nS2EblXGNjco7L7eaAuHDOclNyUNyaOJ1H9arMT5EJHayH1yYlna0PAVarFaujNV//xjd46VOfYrFccrQ+4o233+Jzn/8cr3/7NaN2Spad3262vPHaa7z8yitcXl7inOONN9/k7O5dzu7eRaGUfBvuzH2Akt8MZSm72vx4dgKOhHcWFh01EvstXXeHNnTmDzjQfMk4DOzjgKhj2O+Iux2tDHz6tOHeuiNg3b9SqV3wGXKwychiNTKddowpk2LGeT81F21DaxEwzYzjQNOU5j6hMJjoYUeFmYlRmvkkNYi8ll3bu6awUSaiWnjc+4CrkcCySGo7h5pTmRZYcXInylHnii+jV0zZJ5HLXQkg2GDNLKwARgXfGNv+nDivaRt2/VAieMIw7hnGwVDFoiyWLXdOj2atkBzr9RJfanmqedb7/jGwYgi11+RhbM45YlFs8+Vs7JvLSxzwPa++Qusb3v72a6wXC1xK7C83jPuezgfuv/EGi+WK80cP2V1c8tZrr3P39MzubUosFx1f/fJvsOg6To/W5BiJ/YjyCfBZavY4ay1CEnxx78UZ+CNrQmMP40B2Hdu0NRs/jXgi4+UD0jAQ1PPi0Zo7ywVed4RxjzpHFCOb8wheAolUom5m/gTv6feFZQWlK30LBTvOnShNc6D9Ua3ltTOc0USSYL5FTBWUaT/Ti59CxwcluGrCgCVpw6xKcL7InfPm/1R/oOzEThwxjVeUZZ4vubIRuarkOimM+QVuKgdwtdBKhFhOs/0wFDM3lmhlous6VqslL37qhakmE7UTzkCNxeRSod8PhfvrMPGVgXQ6f8r70ziS0UlZUs5s9zv+23/9L3z6ez7DOAy89cabvPnt3+XO2Slf/63f4vu+7w9w/s47fPnhQ+7du8ebb77Jsut48PZb3H/jdVK2gr4H99/m/uu/a35jSly+9x6x338yTpaaoHPe4cXRihHr5ZJwAztlWpT+O29zkR+SCWSJDOOOfjvic+LeUcuddYfPfYFdCBos3NqqJetySpYTSPUEs+WbVVk0Dc4ZWLOxkBM6qwyck8alQtBguQkzQcQrzmWLdqniGlv+IXt8LJWYXkmaccETckkserGFUcYy+RZlcc9NKxEhiGPI5vSrNzI77/zUoHReYWi34XHHf7KMRNj3VtxVOcGcOIuuOUc/Dha2zpmUk9W1aMblRLNYkMWZjzU5GVa7k9UKvlTr78B2jSQWlCn9OitYtfxgriQwncEeHaUaICcu3r3P1961VkDiAiE0vL27wCF87dd/1RAHIfDo/huoKlsxFPijB+O0wWww7FqMA1/5zV+jLLAPOFduiLLAYWHM4iPMuXWrqdE6z5JAH5VE5rhd4NojXHCoDkiOVHCqlOhNDa/KzGmtyUPb9cx29T6waBa22AqWK89audWFOPVaD21hZIylvZypuHMeL0LUaOHY8ntysvqWOR/w/OSwtx3uQP399fu6UmmYdYbnVatEzBy6+UL1GfyVU+m61HtRN4ErJbkU+E1KjCnSFHbKPNr4u6YrC9rR9z2vvfZa+dTSHVgOn1WVv3YWsNSA4r0RlcwDGPVfCMFKoUUmXN+Y4vTb7XON3B0KL/Z4oJJtW2OqyaWTdf2O2rdSVSdT+8PixOT/B1D2UYuIXABff9bjuCbPAe8860HM5HY8HywfxZg+o6rPP+mFm3KyfF0PLcNvhIjI/7hJY7odzwfLxz2m797U4lZu5VYmuVWWW7mVDyk3RVn+2bMewBPkpo3pdjwfLB/rmG6Eg38rt/JJkJtystzKrdx4eebKIiJ/TkS+LiLfFJEvPKXv/Bcicl9EvjK7dldEfkFEvlH+npXrIiL/uIzvyyLyIx/DeD4tIr8sIl8Vkd8Skb9+A8a0EJFfEZHfLGP6u+X650TkS+W7f0ZE2nK9K8+/WV7/7Ec9pvI9XkR+XUR+7qmPZw6FeNr/MI6PbwGfB1rgN4Hvfwrf+6eAHwG+Mrv294EvlMdfAP5eefzjwH/Cct4/CnzpYxjPS8CPlMfHwP8Bvv8Zj0mAo/K4Ab5UvuvfAj9Zrv808FfL478G/HR5/JPAz3xMc/c3gX8F/Fx5/tTG86yV5ceAn589/yLwxaf03Z+9pixfB14qj1/Ccj8A/xT4i09638c4tv8I/NmbMiZgBfxP4I9hSb9wff6Anwd+rDwO5X3yEY/jVeAXgT8D/FxR6Kc2nmdthr0CfHv2/LVy7VnIi6r6Znn8FvBiefxUx1jMhR/GdvJnOqZi8vwGcB/4BcwKeKiqlfBs/r3TmMrrj4B7H/GQ/iHwtzjAuO49zfE8a2W5kaK2HT31MKGIHAH/Hvgbqnr+rMekqklVfwjb0f8o8Aef5vfPRUT+PHBfVX/tWY3hWSvL68CnZ89fLdeehbwtIi8BlL/3y/WnMkYRaTBF+Zeq+h9uwpiqqOpD4JcxM+dUjJTg+vdOYyqv3wHe/QiH8SeAvyAivwP8G8wU+0dPczzPWll+Ffj9JaLRYo7Yzz6jsfws8FPl8U9hfkO9/pdLBOpHgUcz0+gjETF47j8Hvqaq/+CGjOl5ETktj5eYD/U1TGl+4n3GVMf6E8AvldPwIxFV/aKqvqqqn8XWyS+p6l96quP5OB3VD+m0/TgW/fkW8Lef0nf+a+BNYMTs3L+C2bO/CHwD+M/A3fJeAf5JGd//Av7IxzCeP4mZWF8GfqP8+/FnPKYfAH69jOkrwN8p1z8P/ArwTeDfAV25vijPv1le//zHOH9/mkM07KmN5zaDfyu38iHlWZtht3Irnxi5VZZbuZUPKbfKciu38iHlVllu5VY+pNwqy63cyoeUW2W5lVv5kHKrLLdyKx9SbpXlVm7lQ8r/A7Lw7mHAk8EpAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3XiFNN94EAWH"
      },
      "source": [
        "Build Model\n",
        "\n",
        "\n",
        "Input Layer: It represent input image data. It will reshape image into single diminsion array. Example your image is 64x64 = 4096, it will convert to (4096,1) array.\n",
        "\n",
        "Conv Layer: This layer will extract features from image.\n",
        "\n",
        "Pooling Layer: This layerreduce the spatial volume of input image after convolution.\n",
        "\n",
        "Fully Connected Layer: It connect the network from a layer to another layer\n",
        "\n",
        "Output Layer: It is the predicted values layer."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XEFX8V1lDf6d",
        "outputId": "5f3658ab-85d6-4533-8921-f6265386282d",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "from keras.models import Sequential\n",
        "from keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense, Activation, BatchNormalization\n",
        "\n",
        "model = Sequential()\n",
        "\n",
        "model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_CHANNELS)))\n",
        "model.add(BatchNormalization())\n",
        "model.add(MaxPooling2D(pool_size=(2, 2)))\n",
        "model.add(Dropout(0.25))\n",
        "\n",
        "model.add(Conv2D(64, (3, 3), activation='relu'))\n",
        "model.add(BatchNormalization())\n",
        "model.add(MaxPooling2D(pool_size=(2, 2)))\n",
        "model.add(Dropout(0.25))\n",
        "\n",
        "model.add(Conv2D(128, (3, 3), activation='relu'))\n",
        "model.add(BatchNormalization())\n",
        "model.add(MaxPooling2D(pool_size=(2, 2)))\n",
        "model.add(Dropout(0.25))\n",
        "\n",
        "model.add(Conv2D(256, (3, 3), activation='relu'))\n",
        "model.add(BatchNormalization())\n",
        "model.add(MaxPooling2D(pool_size=(2, 2)))\n",
        "model.add(Dropout(0.25))\n",
        "\n",
        "model.add(Flatten())\n",
        "model.add(Dense(512, activation='relu'))\n",
        "model.add(BatchNormalization())\n",
        "model.add(Dropout(0.5))\n",
        "model.add(Dense(2, activation='softmax')) # 2 because we have cat and dog classes\n",
        "\n",
        "model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])\n",
        "\n",
        "model.summary()"
      ],
      "execution_count": 25,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model: \"sequential\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "conv2d (Conv2D)              (None, 126, 126, 32)      896       \n",
            "_________________________________________________________________\n",
            "batch_normalization (BatchNo (None, 126, 126, 32)      128       \n",
            "_________________________________________________________________\n",
            "max_pooling2d (MaxPooling2D) (None, 63, 63, 32)        0         \n",
            "_________________________________________________________________\n",
            "dropout (Dropout)            (None, 63, 63, 32)        0         \n",
            "_________________________________________________________________\n",
            "conv2d_1 (Conv2D)            (None, 61, 61, 64)        18496     \n",
            "_________________________________________________________________\n",
            "batch_normalization_1 (Batch (None, 61, 61, 64)        256       \n",
            "_________________________________________________________________\n",
            "max_pooling2d_1 (MaxPooling2 (None, 30, 30, 64)        0         \n",
            "_________________________________________________________________\n",
            "dropout_1 (Dropout)          (None, 30, 30, 64)        0         \n",
            "_________________________________________________________________\n",
            "conv2d_2 (Conv2D)            (None, 28, 28, 128)       73856     \n",
            "_________________________________________________________________\n",
            "batch_normalization_2 (Batch (None, 28, 28, 128)       512       \n",
            "_________________________________________________________________\n",
            "max_pooling2d_2 (MaxPooling2 (None, 14, 14, 128)       0         \n",
            "_________________________________________________________________\n",
            "dropout_2 (Dropout)          (None, 14, 14, 128)       0         \n",
            "_________________________________________________________________\n",
            "conv2d_3 (Conv2D)            (None, 12, 12, 256)       295168    \n",
            "_________________________________________________________________\n",
            "batch_normalization_3 (Batch (None, 12, 12, 256)       1024      \n",
            "_________________________________________________________________\n",
            "max_pooling2d_3 (MaxPooling2 (None, 6, 6, 256)         0         \n",
            "_________________________________________________________________\n",
            "dropout_3 (Dropout)          (None, 6, 6, 256)         0         \n",
            "_________________________________________________________________\n",
            "flatten (Flatten)            (None, 9216)              0         \n",
            "_________________________________________________________________\n",
            "dense (Dense)                (None, 512)               4719104   \n",
            "_________________________________________________________________\n",
            "batch_normalization_4 (Batch (None, 512)               2048      \n",
            "_________________________________________________________________\n",
            "dropout_4 (Dropout)          (None, 512)               0         \n",
            "_________________________________________________________________\n",
            "dense_1 (Dense)              (None, 2)                 1026      \n",
            "=================================================================\n",
            "Total params: 5,112,514\n",
            "Trainable params: 5,110,530\n",
            "Non-trainable params: 1,984\n",
            "_________________________________________________________________\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GTsRkNZlEp9S"
      },
      "source": [
        "Callbacks"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "v9olGx-1Elzn"
      },
      "source": [
        "from keras.callbacks import EarlyStopping, ReduceLROnPlateau"
      ],
      "execution_count": 26,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "vlLvxlhiEwcY"
      },
      "source": [
        "Early Stop\n",
        "\n",
        "To prevent over fitting we will stop the learning after 10 epochs and val_loss value not decreased"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1myMXGP7Et10"
      },
      "source": [
        "earlystop = EarlyStopping(patience=10)"
      ],
      "execution_count": 27,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HAFClnwJE3VD"
      },
      "source": [
        "Learning Rate Reduction\n",
        "\n",
        "We will reduce the learning rate when then accuracy not increase for 2 steps"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9iT9fy0TE1Yb"
      },
      "source": [
        "learning_rate_reduction = ReduceLROnPlateau(monitor='val_accuracy', \n",
        "                                            patience=2, \n",
        "                                            verbose=1, \n",
        "                                            factor=0.5, \n",
        "                                            min_lr=0.00001)"
      ],
      "execution_count": 28,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "30fgqmTjE6aT"
      },
      "source": [
        "callbacks = [earlystop, learning_rate_reduction]"
      ],
      "execution_count": 29,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ilc_GkWHFHXY"
      },
      "source": [
        "Prepare data\n",
        "\n",
        "Because we will use image genaretor with class_mode=\"categorical\". We need to convert column category into string. Then imagenerator will convert it one-hot encoding which is good for our classification.\n",
        "\n",
        "So we will convert 1 to rumor and 0 to nonrumor"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "x4vPWpOwE9ss"
      },
      "source": [
        "df[\"category\"] = df[\"category\"].replace({0: 'nonrumor', 1: 'rumor'}) "
      ],
      "execution_count": 30,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "IYBab-iIIkHP",
        "outputId": "e9f5ac8d-8660-4e78-fb0f-2ad12f23104c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.head()"
      ],
      "execution_count": 31,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>rumor_images/8cfbe3ffjw1eqxgw7iiyzj20c809o74m.jpg</td>\n",
              "      <td>rumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>rumor_images/5fce79degw1ep55x5lkkwj20hs0nq778.jpg</td>\n",
              "      <td>rumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>nonrumor_images/6541fc49gw1ew1q86s7pdj20go0b4j...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>nonrumor_images/63136032gw1ev9azul72hj20sg11xa...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>rumor_images/50360241jw1ep6urpl68sj20hs0ch74n.jpg</td>\n",
              "      <td>rumor</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  rumor_images/8cfbe3ffjw1eqxgw7iiyzj20c809o74m.jpg     rumor\n",
              "1  rumor_images/5fce79degw1ep55x5lkkwj20hs0nq778.jpg     rumor\n",
              "2  nonrumor_images/6541fc49gw1ew1q86s7pdj20go0b4j...  nonrumor\n",
              "3  nonrumor_images/63136032gw1ev9azul72hj20sg11xa...  nonrumor\n",
              "4  rumor_images/50360241jw1ep6urpl68sj20hs0ch74n.jpg     rumor"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 31
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9vGd-5OuJxGK"
      },
      "source": [
        "Divide into 80% train and 20% test, Note that we have shuffled earlier"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "PHvSkqYpIlEC",
        "outputId": "8ca7331d-0d99-47c0-c80c-2227b8911336",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "mid = int(len(df)*0.8)\n",
        "df_train = df[:mid]\n",
        "df_test = df[mid:]\n",
        "print(len(df_train))\n",
        "print(len(df_test))"
      ],
      "execution_count": 32,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "10617\n",
            "2655\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JdHhrULaJytp"
      },
      "source": [
        "train_df, validate_df = train_test_split(df_train, test_size=0.20, random_state=42)\n",
        "train_df = train_df.reset_index(drop=True)\n",
        "validate_df = validate_df.reset_index(drop=True)"
      ],
      "execution_count": 33,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "89DDqmY2lXn1"
      },
      "source": [
        ""
      ],
      "execution_count": 33,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "U_vv7UUvJ06a",
        "outputId": "b6b34b96-1447-45a1-f488-e8db206a7e83",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 321
        }
      },
      "source": [
        "train_df['category'].value_counts().plot.bar()"
      ],
      "execution_count": 34,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f2a9b911c88>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 34
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Ehgi-u8KJ4oi",
        "outputId": "ab3c3686-6ae8-412d-d377-09bef943de19",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 321
        }
      },
      "source": [
        "validate_df['category'].value_counts().plot.bar()"
      ],
      "execution_count": 35,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f2a901138d0>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 35
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QSP4mXwoJ8Ph"
      },
      "source": [
        "total_train = train_df.shape[0]\n",
        "total_validate = validate_df.shape[0]\n",
        "batch_size=32"
      ],
      "execution_count": 36,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UYUi4feTKBcc"
      },
      "source": [
        "Traning Generator"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "d_ojPtyjJ-qR",
        "outputId": "95324e79-bae7-4fdd-963d-478d40535926",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "train_datagen = ImageDataGenerator(\n",
        "    rotation_range=15,\n",
        "    rescale=1./255,\n",
        "    shear_range=0.1,\n",
        "    zoom_range=0.2,\n",
        "    horizontal_flip=True,\n",
        "    width_shift_range=0.1,\n",
        "    height_shift_range=0.1\n",
        ")\n",
        "\n",
        "train_generator = train_datagen.flow_from_dataframe(\n",
        "    train_df, \n",
        "    \"./train_extracted/MM17-WeiboRumorSet/\", \n",
        "    x_col='filename',\n",
        "    y_col='category',\n",
        "    target_size=IMAGE_SIZE,\n",
        "    class_mode='categorical',\n",
        "    batch_size=batch_size\n",
        ")"
      ],
      "execution_count": 37,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found 8478 validated image filenames belonging to 2 classes.\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/dataframe_iterator.py:282: UserWarning: Found 15 invalid image filename(s) in x_col=\"filename\". These filename(s) will be ignored.\n",
            "  .format(n_invalid, x_col)\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "llVLhuxYKh2N"
      },
      "source": [
        "Validation Generator"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ijwdyzmvKc4Y",
        "outputId": "424b425a-e6dd-4554-f850-b0a9ddf1de5d",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "validation_datagen = ImageDataGenerator(rescale=1./255)\n",
        "validation_generator = validation_datagen.flow_from_dataframe(\n",
        "    validate_df, \n",
        "    \"./train_extracted/MM17-WeiboRumorSet/\", \n",
        "    x_col='filename',\n",
        "    y_col='category',\n",
        "    target_size=IMAGE_SIZE,\n",
        "    class_mode='categorical',\n",
        "    batch_size=batch_size\n",
        ")"
      ],
      "execution_count": 38,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found 2119 validated image filenames belonging to 2 classes.\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/dataframe_iterator.py:282: UserWarning: Found 5 invalid image filename(s) in x_col=\"filename\". These filename(s) will be ignored.\n",
            "  .format(n_invalid, x_col)\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mVVVotrcK2P7"
      },
      "source": [
        "See how our generator work"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "VtfGbdKXKs_B",
        "outputId": "6a57ec0b-f1d3-4909-f040-49d8ad95bf3a",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "example_df = train_df.sample(n=1).reset_index(drop=True)\n",
        "example_generator = train_datagen.flow_from_dataframe(\n",
        "    example_df, \n",
        "    \"./train_extracted/MM17-WeiboRumorSet/\", \n",
        "    x_col='filename',\n",
        "    y_col='category',\n",
        "    target_size=IMAGE_SIZE,\n",
        "    class_mode='categorical'\n",
        ")"
      ],
      "execution_count": 39,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found 1 validated image filenames belonging to 1 classes.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IgVpi6rfLOVh"
      },
      "source": [
        "Seems great"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "G4bJtNoKLQNf"
      },
      "source": [
        "Fit Model"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "iJW0H0FJOFoG"
      },
      "source": [
        "FAST_RUN = False"
      ],
      "execution_count": 40,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "iYK7nnTtLE6y",
        "outputId": "29c1bc73-410a-4068-d1ce-b9537355ecc8",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "epochs=3 if FAST_RUN else 20\n",
        "history = model.fit_generator(\n",
        "    train_generator, \n",
        "    epochs=epochs,\n",
        "    validation_data=validation_generator,\n",
        "    validation_steps=total_validate//batch_size,\n",
        "    steps_per_epoch=total_train//batch_size,\n",
        "    callbacks=callbacks\n",
        ")"
      ],
      "execution_count": 41,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "WARNING:tensorflow:From <ipython-input-41-28f6c98b1462>:8: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Please use Model.fit, which supports generators.\n",
            "Epoch 1/20\n",
            "265/265 [==============================] - 97s 367ms/step - loss: 0.9712 - accuracy: 0.5436 - val_loss: 0.7096 - val_accuracy: 0.5005\n",
            "Epoch 2/20\n",
            "265/265 [==============================] - 96s 364ms/step - loss: 0.7445 - accuracy: 0.5787 - val_loss: 0.9329 - val_accuracy: 0.4067\n",
            "Epoch 3/20\n",
            "265/265 [==============================] - 99s 373ms/step - loss: 0.6797 - accuracy: 0.5996 - val_loss: 0.6910 - val_accuracy: 0.6075\n",
            "Epoch 4/20\n",
            "265/265 [==============================] - 99s 374ms/step - loss: 0.6599 - accuracy: 0.6111 - val_loss: 0.6229 - val_accuracy: 0.6307\n",
            "Epoch 5/20\n",
            "265/265 [==============================] - 101s 379ms/step - loss: 0.6529 - accuracy: 0.6045 - val_loss: 0.7153 - val_accuracy: 0.5384\n",
            "Epoch 6/20\n",
            "265/265 [==============================] - 102s 385ms/step - loss: 0.6420 - accuracy: 0.6262 - val_loss: 0.5841 - val_accuracy: 0.6752\n",
            "Epoch 7/20\n",
            "265/265 [==============================] - 101s 383ms/step - loss: 0.6300 - accuracy: 0.6471 - val_loss: 0.7520 - val_accuracy: 0.6207\n",
            "Epoch 8/20\n",
            "265/265 [==============================] - ETA: 0s - loss: 0.6226 - accuracy: 0.6544\n",
            "Epoch 00008: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n",
            "265/265 [==============================] - 98s 369ms/step - loss: 0.6226 - accuracy: 0.6544 - val_loss: 0.6730 - val_accuracy: 0.6174\n",
            "Epoch 9/20\n",
            "265/265 [==============================] - 96s 363ms/step - loss: 0.6064 - accuracy: 0.6628 - val_loss: 0.6453 - val_accuracy: 0.6449\n",
            "Epoch 10/20\n",
            "265/265 [==============================] - ETA: 0s - loss: 0.5954 - accuracy: 0.6745\n",
            "Epoch 00010: ReduceLROnPlateau reducing learning rate to 0.0002500000118743628.\n",
            "265/265 [==============================] - 95s 360ms/step - loss: 0.5954 - accuracy: 0.6745 - val_loss: 0.6104 - val_accuracy: 0.6738\n",
            "Epoch 11/20\n",
            "265/265 [==============================] - 95s 358ms/step - loss: 0.5823 - accuracy: 0.6905 - val_loss: 0.6363 - val_accuracy: 0.6719\n",
            "Epoch 12/20\n",
            "265/265 [==============================] - 95s 357ms/step - loss: 0.5825 - accuracy: 0.6875 - val_loss: 0.5836 - val_accuracy: 0.6965\n",
            "Epoch 13/20\n",
            "265/265 [==============================] - 95s 358ms/step - loss: 0.5803 - accuracy: 0.6844 - val_loss: 0.5603 - val_accuracy: 0.7221\n",
            "Epoch 14/20\n",
            "265/265 [==============================] - 95s 357ms/step - loss: 0.5731 - accuracy: 0.6924 - val_loss: 0.6498 - val_accuracy: 0.6795\n",
            "Epoch 15/20\n",
            "265/265 [==============================] - ETA: 0s - loss: 0.5713 - accuracy: 0.6983\n",
            "Epoch 00015: ReduceLROnPlateau reducing learning rate to 0.0001250000059371814.\n",
            "265/265 [==============================] - 94s 356ms/step - loss: 0.5713 - accuracy: 0.6983 - val_loss: 0.5635 - val_accuracy: 0.7140\n",
            "Epoch 16/20\n",
            "265/265 [==============================] - 95s 357ms/step - loss: 0.5655 - accuracy: 0.7056 - val_loss: 0.6024 - val_accuracy: 0.6941\n",
            "Epoch 17/20\n",
            "265/265 [==============================] - 95s 358ms/step - loss: 0.5630 - accuracy: 0.6998 - val_loss: 0.5448 - val_accuracy: 0.7363\n",
            "Epoch 18/20\n",
            "265/265 [==============================] - 95s 358ms/step - loss: 0.5608 - accuracy: 0.7013 - val_loss: 0.5626 - val_accuracy: 0.7154\n",
            "Epoch 19/20\n",
            "265/265 [==============================] - ETA: 0s - loss: 0.5620 - accuracy: 0.7082\n",
            "Epoch 00019: ReduceLROnPlateau reducing learning rate to 6.25000029685907e-05.\n",
            "265/265 [==============================] - 95s 358ms/step - loss: 0.5620 - accuracy: 0.7082 - val_loss: 0.5819 - val_accuracy: 0.7022\n",
            "Epoch 20/20\n",
            "265/265 [==============================] - 95s 359ms/step - loss: 0.5605 - accuracy: 0.7025 - val_loss: 0.5749 - val_accuracy: 0.7145\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hqmvDWKSO2-w"
      },
      "source": [
        "Save Model"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3HUVXwMKO3gJ"
      },
      "source": [
        "model.save_weights(\"model.h5\")"
      ],
      "execution_count": 42,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "t9gbIiI3VHfZ"
      },
      "source": [
        "model.save_weights(\"4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020Rumor_Nonrumor_50epochs_model.h5\")"
      ],
      "execution_count": 43,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eQw6YuLRq3tT"
      },
      "source": [
        "# saving the dataframe \n",
        "df.to_csv('4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_5331.csv') "
      ],
      "execution_count": 44,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RJ70WX4tq8s1"
      },
      "source": [
        "# saving the dataframe \n",
        "df_train.to_csv('4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_train_5331.csv')\n",
        "# saving the dataframe \n",
        "df_test.to_csv('4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_test_5331.csv') "
      ],
      "execution_count": 45,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "K3if-P8VVMLZ",
        "outputId": "56d96af3-cd68-4342-b2d0-9c575c4978ed",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 17
        }
      },
      "source": [
        "from google.colab import files\n",
        "files.download('4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020Rumor_Nonrumor_50epochs_model.h5') "
      ],
      "execution_count": 46,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_336e6bb4-24ae-42f2-beb0-4d33d46a7a7d\", \"4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020Rumor_Nonrumor_50epochs_model.h5\", 20500760)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fabeuti9rJgv",
        "outputId": "e0bbad2a-bf3a-4ff8-cbc0-0c513e3a662f",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 17
        }
      },
      "source": [
        "files.download('4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_5331.csv') \n",
        "files.download('4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_train_5331.csv') \n",
        "files.download('4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_test_5331.csv') "
      ],
      "execution_count": 47,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_60f3d594-b96e-4782-b99f-4f9efb5a4b61\", \"4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_5331.csv\", 830161)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_e585e0e6-4de4-4a76-9eee-98419c1a3de6\", \"4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_train_5331.csv\", 661825)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_b0764460-91c1-45af-8b54-dbc8a13d0911\", \"4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_test_5331.csv\", 168355)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "jtoywaWXkraL",
        "outputId": "aaaf076f-388a-4284-ca5d-8abdb422d829",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "model.load_weights(\"model.h5\")\n",
        "print(\"Loaded model from disk\")"
      ],
      "execution_count": 48,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Loaded model from disk\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oxt6QQ-hO8PG"
      },
      "source": [
        "Visualize Training"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4NJQxiabO5h8",
        "outputId": "210b1b53-ea6e-4157-87f6-f2d3d5ecc531",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 873
        }
      },
      "source": [
        "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 12))\n",
        "ax1.plot(history.history['loss'], color='b', label=\"Training loss\")\n",
        "ax1.plot(history.history['val_loss'], color='r', label=\"validation loss\")\n",
        "ax1.set_xticks(np.arange(1, epochs, 1))\n",
        "ax1.set_yticks(np.arange(0, 1, 0.1))\n",
        "\n",
        "ax2.plot(history.history['accuracy'], color='b', label=\"Training accuracy\")\n",
        "ax2.plot(history.history['val_accuracy'], color='r',label=\"Validation accuracy\")\n",
        "ax2.set_xticks(np.arange(1, epochs, 1))\n",
        "\n",
        "legend = plt.legend(loc='best', shadow=True)\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "execution_count": 49,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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S6WPP5by823vrAkTYns8AABQJRGw9mTqVGnhQqteJXhr9so69lhbm/V//2fNADt2tC+7Qtq0se4ZTz1Fs4uKmjVLOvlk+/2aPt1S7+uvS8OHhz2y8P35z/Z9+fvf43O8rl2titWli3TxxdZQIz8/PscGAABVQlQByznX0zm3yDm32Dl3awn3P+Kcm7Pr8o1z7pdojheKffeVrrrKTraqsLp1rVAwY4ZdP+ss611RoWpWRoZVX9h0uPxmzJBOO83aO370kdShg7Uh/+1vpT/9yZJvdTV9ulWRbrlFatUqfsfdd19p2jSrIg4dKp13XpSLFAEAQHXifCWnITnnUiR9I+lMSSskzZTUz3u/oJTHD5bUxXt/dVmvm5aW5rOysio1JgRj+3bprrtsL9dWrawodcYZ5Xhibq5Vsjp1svVYKNu770p9+kgtW9r1wiFi3Tpbi1WnjoWshg3DG2cY8vKktDT7Pnz9tVSvXvzH4L11D73xRumQQ6Q33qj8/lsAAKDKcc7N8t6nFb89mgpWd0mLvfdLvPc5ksZL6lPG4/tJejGK4yFO6taV/vEPK67UqSOdeaZ1sN68eQ9PrFnT3vWfMkX64Yd4DDV5vfmm9JvfSAceaJWa4hWaZs2kceOkJUvsm1/d1mM9/bQ1mvjHP8IJV5JNTRw0yObL/vST7XMQyL4GAACgKosmYB0gaXmhz1fsum03zrk2ktpJmhbF8RBnxx1n57g332wd2I880gotZRo40E5MaXZRupdespb/nTpJH3wg7bNPyY876STpnnssaD3zTFyHGKqNG6U77pBOPFG66KKwRyOdeqqty2rVyjYofuSR6hd4AQBAucWrycUlkl7x3ueVdKdzLt05l+Wcy1q7dm2choTyqFtXevhha64WqWZde20Z1azWre0k9KmnpJ074zrWpPDMM9at7rjjpPfes0pVWW67zdZoDRokLShx9m3V87e/ST//bN07E6WxTLt2tnlcnz7STTfZuswdO8IeFQAASEDRBKyVkgrPa2q567aSXKIypgd670d579O892ktWrSIYkiIleOPt2rWTTfZfqwdO1ofgBKlp0urV9s0OBQYNky6+mpb0Pb229Jee+35OSkptg9bw4ZWzdm2LfbjDNOiRRasBgywrRESSYMG0iuvSHffLT33nHV+XLUq7FEBAIAEE03AmimpvXOunXMuVRai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AAgIAQsAAAAAAkLAAgAAAICAELAAAAAAICAELAAAAAAICAELAAAAAAJCwAIAAACAgBCwAAAAACAgBCwAAAAACAgBCwAAAAACQsACAAAAgIAQsAAAAAAgIAQsAAAAAAgIAQsAAAAAAkLAAgAAAICAELAAAAAAICAELAAAAAAICAELAAAAAAISVcByzvV0zi1yzi12zt1awv09nHOznXO5zrkLozkWAAAAACS6Sgcs51yKpBGSeknqIKmfc65DsYctk3SlpHGVPQ4AAAAAJIuaUTy3u6TF3vslkuScGy+pj6QFkQd473/YdV9+FMcBAAAAgKQQzRTBAyQtL/T5il23VZhzLt05l+Wcy1q7dm0UQwIAAACA8CREkwvv/SjvfZr3Pq1FixZhDwcAAAAAKiWagLVSUqtCn7fcdRsAAAAAVEvRBKyZkto759o551IlXSJpYjDDAgAAAIDkU+mA5b3PlTRI0hRJCyVN8N7Pd87d65zrLUnOuW7OuRWSfidppHNufhCDBgAAAIBEFE0XQXnvJ0maVOy2uwpdnymbOggAAAAAVV5CNLkAAAAAgKqAgAUAAAAAASFgAQAAAEBACFgAAAAAEBACFgAAAID/Z+++w6OstjYO/zahF0FAEAEFEemEElBBRcSCDcRCsYHYFREbYvlExXrAwrEXBEUFBY9YQQVEUBTpUgSpUpQmLbTU/f2xJgVIIAmTvJPkua9rriRT10za+8zee20JEwUsERERERGRMFHAEhERERERCRMFLBERERERkTBRwBIREREREQkTBSwREREREZEwUcASEREREREJEwUsERERERGRMFHAEhERERERCRMFLBERERERkTBRwBIREREREQkTBSwREREREZEwUcASEREREREJEwUsERERERGRMFHAEhERERERCRMFLBERERERkTBRwBIREREREQkTBSwREREREZEwUcASEREREREJEwUsERERERGRMFHAEhERERERCRMFLBERERERkTBRwBIREREREQkTBSwREREREZEwUcASEREREREJEwUsERERERGRMFHAEhERERERCZMjCljOuY7OuaXOueXOuQEZXF7COfdx6PIZzrlaR/J4IiIiIiIikSzHAcs5FwW8ClwANAR6OOcaHnC1G4Bt3vuTgBeB53L6eCIiIiIiIpHuSEawWgPLvfcrvffxwGig8wHX6Qy8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CrDSpUtTp04dihcvHnQpIiIiIiKpshKwZgJ1nXO1sWDVHRuN2o9zrj5wNPBLuvOOBvZ47+Occ5WBtsB/slvkihUrqFChAvXq1aNIEXWWL+ySk5PZsGEDCxYsoEqVKtSsWfPwNxIRERERyQOHTSve+0SgD/At8Afwifd+kXPuCedc+pbr3YHR3nuf7rwGwCzn3HzgB+DZ9N0Hs2rPnj1UrVpV4UoAKFKkCMceeyzee8aOHcuyZcuCLklEREREBMjiPlje+2+Abw4479EDvn4sg9tNB5ocQX2pFK4kvSJFiuCco0yZMsybN4+6desGXZKIiIiISNibXIjkqaJFixIXFxd0GSIiIiIigAJWlvz77780a9aMZs2aceyxx1K9evXUr+Pj4w9521mzZtG3b9/DPkabNm3CVa6IiIiIiAQkS1MEC7tKlSoxb948AB577DHKli3Lfffdl3p5YmIiRYtm/FLGxMQQExNz2MeYPn16eIrNQ0lJSURFRQVdhoiIiIhIxMh3AatfPwhlnbBp1gxeeil7t+nVqxclS5Zk7ty5tG3blu7du3PXXXexb98+SpUqxfDhw6lXrx5TpkxhyJAhfPXVVzz22GOsWbOGlStXsmbNGvr165c6ulW2bFl27drFlClTeOyxx6hcuTILFy6kZcuWfPDBBzjn+Oabb7jnnnsoU6YMbdu2ZeXKlXz11Vf71bV69WquvfZadu/eDcArr7ySOjr23HPP8cEHH1CkSBEuuOACnn32WZYvX86tt97K5s2biYqKYsyYMaxduza1ZoA+ffoQExNDr169qFWrFt26deP777+nf//+xMbG8tZbbxEfH89JJ53EyJEjKV26NBs3buTWW29l5cqVALz++utMmDCBihUr0q9fPwAefvhhqlSpwl133ZXj752IiIiISCTJdwErkqxbt47p06cTFRXFzp07mTZtGkWLFmXixIk89NBDfPrppwfdZsmSJfzwww/ExsZSr149brvtNooVK7bfdebOncuiRYs47rjjaNu2LT///DMxMTHccsstTJ06ldq1a9OjR48Ma6pSpQrff/89JUuWZNmyZfTo0YNZs2Yxfvx4Pv/8c2bMmEHp0qXZunUrAFdffTUDBgygS5cu7Nu3j+TkZNauXXvI512pUiXmzJkD2PTJm266CYBHHnmEYcOGceedd9K3b1/atWvHZ599RlJSErt27eK4447jsssuo1+/fiQnJzN69Gh+++23bL/uIiIiIiKRKt8FrOyONOWmK6+8MnWK3I4dO+jZsyfLli3DOUdCQkKGt7nooosoUaIEJUqUoEqVKmzcuJEaNWrsd53WrVunntesWTNWr15N2bJlOfHEE6lduzYAPXr04K233jro/hMSEujTpw/z5s0jKiqKP//8E4CJEydy/fXXU7p0aQAqVqxIbGws69evp0uXLgCULFkyS8+7W7duqZ8vXLiQRx55hO3bt7Nr1y7OP/98ACZPnsz7778PQFRUFOXLl6d8+fJUqlSJuXPnsnHjRpo3b06lSpWy9JgiIiIiIvlBvgtYkaRMmTKpn//f//0f7du357PPPmP16tWcddZZGd6mRIkSqZ9HRUWRmJiYo+tk5sUXX6Rq1arMnz+f5OTkLIem9IoWLUpycnLq1/v27dvv8vTPu1evXowbN47o6GhGjBjBlClTDnnfN954IyNGjGDDhg307t0727WJiIiIiEQydREMkx07dlC9enUARowYEfb7r1evHitXrmT16tUAfPzxx5nWUa1aNYoUKcLIkSNJSkoC4Nxzz2X48OHs2bMHgK1bt1KuXDlq1KjBuHHjAIiLi2PPnj2ccMIJLF68mLi4OLZv386kSZMyrSs2NpZq1aqRkJDAhx9+mHp+hw4deP311wFrhrFjxw4AunTpwoQJE5g5c2bqaJeIiIiISEGhgBUm/fv358EHH6R58+bZGnHKqlKlSvHaa6/RsWNHWrZsSbly5ShfvvxB17v99tt57733iI6OZsmSJamjTR07dqRTp07ExMTQrFkzhgwZAsDIkSP573//S9OmTWnTpg0bNmygZs2adO3alcaNG9O1a1eaN2+eaV2DBg3ilFNOoW3bttSvXz/1/KFDh/LDDz/QpEkTWrZsyeLFiwEoXrw47du3p2vXrupAKCIiIuGVnAx33w333QfbtwddjRRSznsfdA37iYmJ8bNmzdrvvNmzZ9OyZcuAKoocu3btomzZsnjvueOOO6hbty5333130GVlS3JyMi1atGDMmDHUrVv3iO5r9uzZzJ8/n+LFi3PNNdeEqUIRERHJtx55BJ56yj6vXBmeeQauvx70pq7kAufcbO/9QfsxaQQrH3n77bdp1qwZjRo1YseOHdxyyy1Bl5Qtixcv5qSTTqJDhw5HHK5ERERE9jNypIWrG26AOXOgfn246SY45RT49degq5NCRE0u8pG77747341YpdewYcPUfbFEREREwubnn+HGG6FdO3jtNSheHKZOhVGj4P774bTToGdPePZZOPbYoKuVAk4jWCIiIiKSf61aBV26wPHHw6efWrgCcA6uugqWLIEBA+Cjj+Dkk2HIEIiPD7ZmKdAUsEREREQkf9q5Ey65BBIS4KuvIKP9NcuVs7VYixbBmWfaiFbTpvDtt3lfrxQKClgiIiIikv8kJkL37jZCNWYM1Kt36OvXrWsh7KuvICkJOnaESy8FLV+QMFPAEhEREZH85777YPx4eOUVOOecrN/uootg4UJbjzVxIjRsCP/3f7B7d+7VKoWKAlYWtG/fnm8PGEZ+6aWXuO222zK9zVlnnUVKu/kLL7yQ7RnsxfDYY4+l7keVmXHjxqXuIQXw6KOPMnHixOyULyIiIlKwvPEGDB0Kd90Ft96a/duXKAEPPABLl8Lll8OTT0KDBvDJJxBhWxhJ/qOAlQU9evRg9OjR+503evRoevTokaXbf/PNN1SoUCFHj31gwHriiSc4Jzvv0kSApKSkoEsQERGRgmLiROjTBy68EJ5//sjuq3p1+PBDmDbN1m916wZnnw0LFoSnVimU8l/A6tcPzjorvKd+/Q75kFdccQVff/018aGOM6tXr+bvv//mjDPO4LbbbiMmJoZGjRoxcODADG9fq1YttmzZAsBTTz3FySefzOmnn87SpUtTr/P222/TqlUroqOjufzyy9mzZw/Tp0/niy++4P7776dZs2asWLGCXr16MXbsWAAmTZpE8+bNadKkCb179yYuLi718QYOHEiLFi1o0qQJS5YsOaim1atXc8YZZ9CiRQtatGjB9OnTUy977rnnaNKkCdHR0QwYMACA5cuXc8455xAdHU2LFi1YsWIFU6ZM4eKLL069XZ8+fRgxYkRqDQ888EDqpsIZPT+AjRs30qVLF6Kjo4mOjmb69Ok8+uijvPTSS6n3+/DDDzN06NBDfo9ERESkEFi6FK680kabRo0K3wbCp58Os2bB66/D779Ds2Zw552wdWt47l8KlfwXsAJQsWJFWrduzfjx4wEbveratSvOOZ566ilmzZrF77//zo8//sjvv/+e6f3Mnj2b0aNHM2/ePL755htmzpyZetlll13GzJkzmT9/Pg0aNGDYsGG0adOGTp06MXjwYObNm0edOnVSr79v3z569erFxx9/zIIFC0hMTOT1119Pvbxy5crMmTOH2267LcNpiFWqVOH7779nzpw5fPzxx/Tt2xeA8ePH8/nnnzNjxgzmz59P//79Abj66qu54447mD9/PtOnT6datWqHfd0qVarEnDlz6N69e4bPD6Bv3760a9eO+fPnM2fOHBo1akTv3r15//33AUhOTmb06NFcc801h308ERERKcD+/RcuvhiKFYMvv4Sjjgrv/UdF2XTDZcvs42uvWVv3t96yphgiWZT/NhpON7KRl1KmCXbu3JnRo0enBoRPPvmEt956i8TERP755x8WL15M06ZNM7yPadOm0aVLF0qXLg1Ap06dUi9buHAhjzzyCNu3b2fXrl2cf/75h6xn6dKl1K5dm5NPPhmAnj178uqrr9IvNBp32WWXAdCyZUv+97//HXT7hIQE+vTpw7x584iKiuLPP/8EYOLEiVx//fWpNVasWJHY2FjWr19Ply5dAChZsmSWXrNu3bod9vlNnjw5NUxFRUVRvnx5ypcvT6VKlZg7dy4bN26kefPmVMqo7aqIiIgUDvHxtlZqzRr44QeoVSv3HqtiRXj1Vbj5ZhvFuuUWePNNePllaNMm9x5XCgyNYGVR586dmTRpEnPmzGHPnj20bNmSVatWMWTIECZNmsTvv//ORRddxL59+3J0/7169eKVV15hwYIFDBw4MMf3k6JEiRKAhZbExMSDLn/xxRepWrUq8+fPZ9asWanTH7OjaNGiJCcnp359YM1lypRJ/Ty7z+/GG29kxIgRDB8+nN69e2e7NhERESkgvIfbb4cff4R33827kBMdbY85ahRs3Aht28K118I//+TN40u+pYCVRWXLlqV9+/b07t07tbnFzp07KVOmDOXLl2fjxo2pUwgzc+aZZzJu3Dj27t1LbGwsX375ZeplsbGxVKtWjYSEBD788MPU88uVK0dsbOxB91WvXj1Wr17N8uXLARg5ciTt2rXL8vPZsWMH1apVo0iRIowcOTK1EcW5557L8OHDU9dIbd26lXLlylGjRg3GjRsHQFxcHHv27OGEE05g8eLFxMXFsX37diZNmpTp42X2/Dp06JA6tTEpKYkdO3YA0KVLFyZMmMDMmTMPO5onIiIiBdgLL8CwYfDww3D11Xn72M6l7bX10EPWZfDkk2HwYBtVE8mAAlY2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wkarqlaFbt0sWJ1ySiBDRylTIg+cavjAA9aUMJLkOGA556KAP4FzgXXATKCH935xJte/E2juve/tnKsIzAJiAA/MBlp677dldFtQwBIREQmrjRttWtr48Tb6M2xYFucTRSDvbR3RO+/YAfzVVwdd0eG9+CLcc4/tdfXxx7lyxBwbawfs6cPUqlVpl9erlzYqFRNjI1WlSyRZd8aHH7bk1a2btcOvncMGCCmeftruc9AgG3LIga1b91/blRK+1q5Nu06xYva8Dhzxqls385c4KSnjwJOVYJRZWEr5PP36s8OpUOHgTn716kVAR/3t2214LPBC8o8jCVinAY95788Pff0ggPc+w00pnHPTgYHe+++dcz2As7z3t4QuexOY4r0fldnjKWCJiIiEybff2mL2HTusXfdtt0XuYoasio+H886DX3+FH3+0d9kj1XPP2T5eV1xha90O7IWdA/v2WdOJ9GFqyZK0JgInnJAWpFq1sjVUh2wesGsXDBliXQYTE9NGCHPSceDTT+25Xn21jZKG+WctNtaea/oRr8WLLUymPP+oKBvdKlfu4ECU0qgjq4oVs3VoZcpk73S421SokP9/DcUcScC6Aujovb8x9PW1wCne+z4ZXPcE4Feghvc+yTl3H1DSe/9k6PL/A/Z674cccLubgZsBjj/++JZ//fVXTp6jiIiIgB1JPvQQvPCCzTMaNco+FhRbtliw2r3bEkbNmkFXdLBBg+DRR60d+3vv5Wg+W0KCBYj0YWrBgrQNYKtU2X/NVEzMIRsEHtr69Tbi9N57No308cdttDCrdc+aZY0SmjWzbnV5uLns3r027S79NMO9e7MffA48hSEPSwGXVwHrASxc3Rn6OksBKz2NYImIiByBpUttUfrcuXDHHTYyUapU0FWF36JFti/WSSfZPl5lygRdkfHegtWTT9ro4bBhh51ylZAAy5bZU0ppALF48f5d1sqXTxuVSjnVqJELIyFz5thGxVOm2Py7wYNt7dihHmj9emvdXayYbXRctWqYixKJTJkFrKy8LbEeSP/WUI3QeRnpDtxxwG3POuC2U7LwmCIiIpId3sO770LfvhaoPv/c1lwVVI0awejRcMklFmQ++ST4dnPe20r8wYNtj7E339yvpoyC1KJFFqRSRqWcs2VQjRrZU2vSxMJUnTp59PRatLARqC+/hPvus7Zt55xjU0yb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\n",
            "text/plain": [
              "<Figure size 864x864 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "C6oe8cu2PIPc"
      },
      "source": [
        "Prepare Testing Data"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qLANKo8ebfnZ",
        "outputId": "88c8725e-fb76-48aa-c351-38b392ad8f9a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df_test.head()\n"
      ],
      "execution_count": 50,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>10617</th>\n",
              "      <td>nonrumor_images/6541fc49gw1exeujso3e7j20go09d3...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10618</th>\n",
              "      <td>nonrumor_images/61e6c012jw1eyd28xsgq9j20e40m87...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10619</th>\n",
              "      <td>nonrumor_images/6a918093jw1ewv6jx9kmdj20dw0ag7...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10620</th>\n",
              "      <td>rumor_images/6fbe59d9jw1ev197g8grlj20cq0hsgmr.jpg</td>\n",
              "      <td>rumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10621</th>\n",
              "      <td>nonrumor_images/4e5b54d8gw1eyvpum5a17j20m80ett...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                filename  category\n",
              "10617  nonrumor_images/6541fc49gw1exeujso3e7j20go09d3...  nonrumor\n",
              "10618  nonrumor_images/61e6c012jw1eyd28xsgq9j20e40m87...  nonrumor\n",
              "10619  nonrumor_images/6a918093jw1ewv6jx9kmdj20dw0ag7...  nonrumor\n",
              "10620  rumor_images/6fbe59d9jw1ev197g8grlj20cq0hsgmr.jpg     rumor\n",
              "10621  nonrumor_images/4e5b54d8gw1eyvpum5a17j20m80ett...  nonrumor"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 50
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9UBNf5qQbtip"
      },
      "source": [
        "df_test = df_test.reset_index(drop = True)"
      ],
      "execution_count": 51,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qgwp88LEPEJI",
        "outputId": "3f71e03f-0e45-4981-9876-ad1fcbb5e164",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "test_filenames = []\n",
        "test_categories = []\n",
        "for i in range(0,len(df_test)):\n",
        "  test_filenames.append(df_test['filename'][i])\n",
        "  test_categories.append(df_test['category'][i])\n",
        "print(len(test_filenames))"
      ],
      "execution_count": 52,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "2655\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "oroYR9nFPKaX"
      },
      "source": [
        "test_df = df_test\n",
        "nb_samples = test_df.shape[0]"
      ],
      "execution_count": 53,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ke2CJfEzeQxk"
      },
      "source": [
        "Create Testing Generator"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Au0hQBuDPMi3",
        "outputId": "9ebdc696-8aac-4172-c612-18d4d881ef10",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "test_gen = ImageDataGenerator(rescale=1./255)\n",
        "test_generator = test_gen.flow_from_dataframe(\n",
        "    test_df, \n",
        "    \"./train_extracted/MM17-WeiboRumorSet/\", \n",
        "    x_col='filename',\n",
        "    y_col=None,\n",
        "    class_mode=None,\n",
        "    target_size=IMAGE_SIZE,\n",
        "    batch_size=batch_size,\n",
        "    shuffle=False,\n",
        "    validate_filenames=False\n",
        ")"
      ],
      "execution_count": 54,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found 2655 non-validated image filenames.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4QrM6f9seki3"
      },
      "source": [
        "Predict"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xaL3pLJ2eT-x"
      },
      "source": [
        "predict = model.predict(test_generator, steps=np.ceil(nb_samples/batch_size))"
      ],
      "execution_count": 55,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "amQMkq5kemlx",
        "outputId": "31e85e61-a477-434c-c2d0-fbf7642026ff",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "print(predict)"
      ],
      "execution_count": 56,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[[0.9393475  0.06065245]\n",
            " [0.955152   0.04484806]\n",
            " [0.99205935 0.00794065]\n",
            " ...\n",
            " [0.95522684 0.04477322]\n",
            " [0.3016169  0.69838315]\n",
            " [0.039956   0.96004397]]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cCw8FByKeqYS"
      },
      "source": [
        "For categoral classication the prediction will come with probability of each category. So we will pick the category that have the highest probability with numpy average max"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kfp83CZ6eoFA"
      },
      "source": [
        "test_df['category_predicted'] = np.argmax(predict, axis=-1)"
      ],
      "execution_count": 57,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UBRiP8lvevMY"
      },
      "source": [
        "We will convert the predict category back into our generator classes by using train_generator.class_indices. It is the classes that image generator map while converting data into computer vision"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JZ-sNkxResjR"
      },
      "source": [
        "label_map = dict((v,k) for k,v in train_generator.class_indices.items())\n",
        "test_df['category_predicted'] = test_df['category_predicted'].replace(label_map)"
      ],
      "execution_count": 58,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "A3bZxpsKggzh"
      },
      "source": [
        "From our prepare data part. We map data with {1: 'rumor', 0: 'nonrumor'}. Now we will map the result back to rumor is 1 and nonrumor is 0"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "V0zaVoW2exJx"
      },
      "source": [
        "test_df['category_predicted'] = test_df['category_predicted'].replace({ 'rumor': 1, 'nonrumor': 0 })\n",
        "test_df['category'] = test_df['category'].replace({ 'rumor': 1, 'nonrumor': 0 })"
      ],
      "execution_count": 59,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "CpR5BXrngknH"
      },
      "source": [
        "Virtaulize Result"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n3NO-gkEgiwd",
        "outputId": "f1d7beed-4ed7-4d69-c84d-9c8cbba68e0e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        }
      },
      "source": [
        "test_df['category_predicted'].value_counts().plot.bar()"
      ],
      "execution_count": 60,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f2a3651b898>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 60
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JIFDmAJpj36U",
        "outputId": "abeb0d79-1b2c-488b-b953-d094ee69d8d1",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        }
      },
      "source": [
        "test_df['category'].value_counts().plot.bar()"
      ],
      "execution_count": 61,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f2a364887b8>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 61
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "F8Vgbm5Oj6re"
      },
      "source": [
        "y_pred = test_df['category_predicted']\n",
        "y_true = test_df['category']"
      ],
      "execution_count": 62,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Fl5UHyHCbf_M",
        "outputId": "88e56478-f440-4645-90a9-c2d5ac175811",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "from sklearn.metrics import accuracy_score # normal accuracy\n",
        "from sklearn.metrics import balanced_accuracy_score # used in case of imbalanced data sets, average of recall, from 0 to 1\n",
        "from sklearn.metrics import confusion_matrix # division of performance on the multilabels\n",
        "from sklearn.metrics import cohen_kappa_score # compares model against random prediction, from -1 to 1\n",
        "from sklearn.metrics import classification_report # for multilabel classification, gives precision, recall, f score, support, more\n",
        "target_names = ['class 0', 'class 1']\n",
        "\n",
        "def print_metrics(y_true, y_pred):\n",
        "    print(\"Accuracy:\", accuracy_score(y_true, y_pred))\n",
        "    print(\"Balanced Accuracy:\" , balanced_accuracy_score(y_true, y_pred))\n",
        "    print(\"Confusion Matrix:\\n\", confusion_matrix(y_true, y_pred))\n",
        "    print(\"Cohen Kappa Score:\", cohen_kappa_score(y_true, y_pred))\n",
        "    print(\"Classification Report:\\n\", classification_report(y_true, y_pred, target_names=target_names))\n",
        "    \n",
        "print('CNN Only')\n",
        "print_metrics(y_true, y_pred)"
      ],
      "execution_count": 63,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "CNN Only\n",
            "Accuracy: 0.6806026365348399\n",
            "Balanced Accuracy: 0.6854681541567688\n",
            "Confusion Matrix:\n",
            " [[ 741  305]\n",
            " [ 543 1066]]\n",
            "Cohen Kappa Score: 0.3567354719484621\n",
            "Classification Report:\n",
            "               precision    recall  f1-score   support\n",
            "\n",
            "     class 0       0.58      0.71      0.64      1046\n",
            "     class 1       0.78      0.66      0.72      1609\n",
            "\n",
            "    accuracy                           0.68      2655\n",
            "   macro avg       0.68      0.69      0.68      2655\n",
            "weighted avg       0.70      0.68      0.68      2655\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kzYktfpVgo7v"
      },
      "source": [
        "See predicted result with images"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NninvD-ebAX3",
        "outputId": "fcf82f5f-7368-4573-a49a-38915d9843d8",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 17
        }
      },
      "source": [
        "# saving the dataframe of our results\n",
        "test_df.to_csv('4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020test_df_5331.csv') \n",
        "files.download('4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020test_df_5331.csv')"
      ],
      "execution_count": 64,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_c7a9d511-01be-4be6-9f0c-cd8ae45311c2\", \"4_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020test_df_5331.csv\", 156161)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "EuGiE__EpTAU"
      },
      "source": [
        ""
      ],
      "execution_count": 64,
      "outputs": []
    }
  ]
}